View Full Version : مقایسه محتوای دو فایل متنی و گزارش گیری
rapidcache.ir
شنبه 04 دی 1389, 12:10 عصر
سلام
من قصد دارم یه برنامه بنویسم با دلفی که محتوای دو فایل متنی رو با هم مقایسه کنه و در دو تکست باکس، موارد شباهت و موارد جدید در فایل دوم رو برام نمایش بده. چطور میتونم اینکار رو انجام بدم ؟
فایل های متنی شامل یه سری عدد هستند که محتوای هر سطر قراره با فایل دوم قیاس بشه.
Felony
شنبه 04 دی 1389, 12:27 عصر
در مورد کلاس TStringList تحقیق کنید ، این کلاس برای کار با رشته ها و فایل های متنی هست و میتونید برنامه مورد نظرتون رو باهاش پیاده کنید .
rapidcache.ir
دوشنبه 06 دی 1389, 17:46 عصر
به نتیجه ای نرسیدم، ممکنه راهنمایی کنین ؟
Felony
دوشنبه 06 دی 1389, 21:31 عصر
فایل های متنی شامل یه سری عدد هستند که محتوای هر سطر قراره با فایل دوم قیاس بشه.
محتوای هر سطر با سطر متناظر تو فایل دوم مقایسه بشه یا با کل سطر های فایل دوم ؟
rapidcache.ir
جمعه 10 دی 1389, 11:43 صبح
با کل سطر ها باید مقایسه بشه.
Felony
جمعه 10 دی 1389, 15:01 عصر
var
Str1, Str2: TStringList;
i, J: Integer;
Check: Boolean;
begin
Str1:= TStringList.Create;
Str2:= TStringList.Create;
try
Str1.LoadFromFile('File 1.txt');
Str2.LoadFromFile('File 2.txt');
for i:= 0 to Str2.Count - 1 do
begin
Check:= False;
for j:= 0 to Str1.Count - 1 do
if Str2.Strings[i]= Str1.Strings[j] then
Check:= True;
if Check= True then
ListBox1.Items.Add(Str2.Strings[i])
else
ListBox2.Items.Add(Str2.Strings[i]);
end;
finally
Str1.Free;
Str2.Free;
end;
end;
rapidcache.ir
جمعه 10 دی 1389, 17:54 عصر
این رو تو محیط Borland Delphi چطور باید پیاده کنم ؟
میخوام دوتا تکست باکس بزارم برای نمایش خروجی و دوتا کنترلر برای انتخاب فایل اول و دوم به عنوان ورودی.
Felony
شنبه 11 دی 1389, 05:30 صبح
این سوالات چیزهایی نیستن که پرسیدن داشته باشن ، خودتون هم کمی وقت بزارید !
rapidcache.ir
شنبه 11 دی 1389, 09:42 صبح
یه راهنمایی کنید ! باور کنین من تازه کارم تو دلفی...
Felony
شنبه 11 دی 1389, 10:11 صبح
باید از کامپوننت OpenFileDialog برای بازکردن فایل دلخواه استفاده کنید ، برای نمایش خروجی هم از Memo یا ListBox .
در موردشون تحقیق کنید ، کمک بیشتر از این میشه خود برنامه !
rapidcache.ir
شنبه 11 دی 1389, 20:32 عصر
خوب، از کد شما استفاده کردم. اما زمانی که دکمه کامپایل رو میزنم، جواب نمیگیرم. چرا ؟
کد ها را با توجه به ممو و دکمه هایی که استفاده کرده بودم هم تغییر دادم.
rapidcache.ir
شنبه 11 دی 1389, 20:45 عصر
سرس رو تغییر دادم، شد این :
begin
Str1:= TStringList.Create;
Str2:= TStringList.Create;
try
Str1.LoadFromFile('c:\amin\file1.txt');
Str2.LoadFromFile('c:\amin\file2.txt');
for i:= 0 to Str2.Count - 1 do
begin
Check:= False;
for j:= 0 to Str1.Count - 1 do
if Str2.Strings[i]= Str1.Strings[j] then
Check:= True;
if Check= True then
Memo1.lines.Add(Str2.Strings[i])
else
Memo2.lines.Add(Str2.Strings[i]);
end;
finally
Str1.Free;
Str2.Free;
end;
end;
اما هنگام کامپایل خطا میگیرم :
[Error] amin.pas(61): Declaration expected but end of file found
Felony
شنبه 11 دی 1389, 21:37 عصر
مشکلی نداره ، یکمی هم خودتون تلاش کنید !
procedure TForm1.Button1Click(Sender: TObject);
var
Str1, Str2: TStringList;
i, j: Integer;
Check: Boolean;
begin
Str1:= TStringList.Create;
Str2:= TStringList.Create;
try
Str1.LoadFromFile('c:\amin\file1.txt');
Str2.LoadFromFile('c:\amin\file2.txt');
for i:= 0 to Str2.Count - 1 do
begin
Check:= False;
for j:= 0 to Str1.Count - 1 do
if Str2.Strings[i]= Str1.Strings[j] then
Check:= True;
if Check= True then
Memo1.lines.Add(Str2.Strings[i])
else
Memo2.lines.Add(Str2.Strings[i]);
end;
finally
Str1.Free;
Str2.Free;
end;
end;
rapidcache.ir
یک شنبه 12 دی 1389, 11:20 صبح
معنی این خطا چیه ؟ از چی داره ایراد میگیره ؟
با کل متغیرها و بخش ها دارم ور میرم، اما تغییری ایجاد نمیشه...
rapidcache.ir
یک شنبه 12 دی 1389, 13:37 عصر
مشکل حل شد، یه جا end رو نذاشته بودم.
ممنون. یه مشکل دیگه؛ لیست باکس، اجازه انتخاب همه سطر ها رو نمیده. از چی باید بجاش استفاده کنم ؟
حل شد : برگشتم به همون ممو، اسکرول بار رو هم بصورت عمودی فعال کردم. ممنون.
حالا میخوام انتخاب فایل از فولدر رو اضافه کنم. نمیدونم از کجا.
rapidcache.ir
یک شنبه 12 دی 1389, 14:36 عصر
انتخاب فایل از درایو و فولدر رو پیدا کردم. پسوند فایل ها رو هم مشخص کردم که فقط این فایل های بخصوص (*.txt) رو نمایش بده. دوتا کار میخوام انجام بدم، نمیدونم چطوریه؛
1- محتوای فایل انتخاب شده، داخل یه memo نمایش داده بشه.
2- فایلی که انتخاب شده، به عنوان سورس برنامه در نظر گرفته بشه. به عبارت بهتر، این دو فایل که انتخاب شدن رو با هم مقایسه و در خروجی نمایش بده.
ممنون میشم حتی اگه شده فقط یه سر نخ بهم بدین.
rapidcache.ir
یک شنبه 12 دی 1389, 16:18 عصر
خیلی از صفحات رو زیر و رو کردم، چیزی دستگیرم نشد. . . راهنمایی لطفا
Felony
یک شنبه 12 دی 1389, 17:10 عصر
1- محتوای فایل انتخاب شده، داخل یه memo نمایش داده بشه.
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
2- فایلی که انتخاب شده، به عنوان سورس برنامه در نظر گرفته بشه. به عبارت بهتر، این دو فایل که انتخاب شدن رو با هم مقایسه و در خروجی نمایش بده.
Str1.LoadFromFile(OpenDialog1.FileName);
Mask
یک شنبه 12 دی 1389, 17:21 عصر
من هنوز متوجه نشدم مشکلت چیه.
سوالت رو دقیق بگو تا برنامش رو برات بنویسم بزارم اینجا.
rapidcache.ir
یک شنبه 12 دی 1389, 18:53 عصر
برنامه به اینجا رسیده که یه فایل رو از طریق file list box انتخاب میکنیم. میخوام فایلی که در این لیست انتخاب میشه، محتواش درون memo نمایش داده بشه. با کدی که دادین نشد. از کل کد خطا میگیره، روش کار نکردم البته که ببینم دقیقا از چیش خطا میگیره.
من میخوام فایل رو از filelistbox انتخاب کنم و نمایش بدم.
Mask
یک شنبه 12 دی 1389, 19:26 عصر
این داش مجتبی مارو حرص نده.
این سوالته آماتوری رو ما آماتورا میتونیم جواب بدیم.
rapidcache.ir
یک شنبه 12 دی 1389, 19:28 عصر
فرم برنامه این شکلی شده تا الان :
http://photobucket.comuv.com/images/fb36c4ccf88f.png
تا الان، کل کاری که میخواستم انجام شده، یه سری تغییرات میخوام بدم به اینصورت که :
فایلی که از filelistbox1 و 2 انتخاب میکنم، هم به عنوان سورس انتخاب بشه، که پس از فشردن دکمه start مورد سنجش قرار بگیره، هم محتوای فایل، در memo3 و 4 نمایش داده بشه.
دکمه Clear، محتوای memo1 و 2 رو تخلیه کنه.
دکمه CLose برنامه رو ببنده.
rapidcache.ir
یک شنبه 12 دی 1389, 20:08 عصر
ندیده بودمش، ضمیمه کردم.
Mask
یک شنبه 12 دی 1389, 20:36 عصر
نمونه زیر رو ببین.
در ضمن من یا دوستان دیگه این نمونه کار ها رو انجام بدیم فایده ای نداره و خودتون از اتفاقات انجام شده بی اطلاع باشید.
سعی کنید یواش یواش شروع کنید برا یادگیری.
rapidcache.ir
یک شنبه 12 دی 1389, 20:51 عصر
من که گفتم راهنمایی کنین انجام بدم، شما اصرار داشتین که خودتون انجامش بدین...
به هر حال، ممنونم.
اما این مشکلات در خروجی برنامه شما وجود داره :
با کلیک بر روی فایل مورد نظر، محتوا در memo نمایش داده نمیشه.
با کلیک بر روی دکمه compare، یک حلقه بدون انتها شروع به کار میکنه...
rapidcache.ir
سه شنبه 14 دی 1389, 17:50 عصر
دیگه راهنمایی نمیکنید ؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.