PDA

View Full Version : سوال: خواندن فایل متنی در Delphi7



kamran_14
دوشنبه 04 اردیبهشت 1391, 22:15 عصر
سلام
چطوری می شه یه فایل متنی رو در دلفی 7 بخونیم و نمایش بدیم

mohsen24000
دوشنبه 04 اردیبهشت 1391, 22:57 عصر
یکی از ساده ترین روشها:



memo1.Lines.LoadFromFile(filename);
یا از کلاس TStringList و...
var txt:TStringList;
begin
txt:=TStringList.Create;
try
txt.LoadFromFile(Filename);
finally
txt.free;
end;
end;

Ananas
سه شنبه 05 اردیبهشت 1391, 00:17 صبح
سلام.
با TStringStream.

kamran_14
سه شنبه 05 اردیبهشت 1391, 17:35 عصر
با TStringStream.
می شه یه مثال ساده بزنید

tiphooo
چهارشنبه 06 اردیبهشت 1391, 00:54 صبح
ساده ترین راه شاید خواندن فایل مانند همان کاری که در پاسکال می کردید باشد به صورت
var
f:TextFile;
s:String;
begin
if opendialog1.execute then
begin
assignfile(f,opendialog1.filename);
reset(f);
while not eof(f) do
begin
readlan(s,f);
end;
closefile(f);
end;

1)یک متغیر از نوع textfile تعریف شده
2) از طریق یک دیالوگ فایل را معرفی می کنیم
3) با دستور AssignFile نام فایل را به متغیر textfile انتساب می دهیم
4) دستور Reset برای باز کردن فایل جهت خواندن و Rewrite جهت ساختن و نوشتن در فایل استفاده می شود
5) دستور eof فایل را تا انتها می خواند
6) دستور read ,Readln برای خواندن از فایل , دستور write,writeln برای نوشتن در فایل
7) دستور Closefile برای بستن فایل

kamran_14
چهارشنبه 06 اردیبهشت 1391, 01:14 صبح
ساده ترین راه شاید خواندن فایل مانند همان کاری که در پاسکال می کردید باشد به

ببخشید
1- می شه یه خط از فایل رو خوند و در متغیری ذخیره کرد؟
2-آیا روشی که شما برای خواندن فایل استفاده کردید با روشی که در اول برای خواندن فایل استفاده شده (Memo) تفاوت دارد؟ کدومیک برای خواندن فایل بزرگ بهتره؟

tiphooo
چهارشنبه 06 اردیبهشت 1391, 02:28 صبح
در روشی که من خدمتتون توضیح دادم داریم فایل رو خط به خط می خونیم و هر بار خط رو توی متغیر S قرار می دیم حالا شما بعد از دستور ReadLn خط اول فایل رو در متغیر S دارید و می توانید هر کاری که می خواهید با آن انجام دهید و بروید سراغ خط بعد
در روشی که از Memo استفاده می شود شاید شما بخواهید کاری را بر روی فایل انجام دهید و هدف شما نمایش فایل نباشد و در این روش اگر بخواهید خط به خط فایل را پیمایش کنید باید همان کاری که من توضیح دادم با Memo بکنید یعنی دوباره کاری.
ولی در کل هرکدام کاربردهای خود را دارند و از سوال شما پیداست (1- می شه یه خط از فایل رو خوند و در متغیری ذخیره کرد؟) از Memo استفاده نکنید بهتر است
اگر خواستید فایل رو حرف به حرف مورد بررسی قرار بدید متغیر S که از نوع String است مانند یک آرایه عمل می کند یعنی S[1] ,S[2], ... به ترتیب حروف ما هستند
در مورد سوال دوم هیجکدام در اندازه فایل تاثیری ندارد .

Felony
چهارشنبه 06 اردیبهشت 1391, 05:58 صبح
ساده ترین راه شاید خواندن فایل مانند همان کاری که در پاسکال می کردید باشد به صورت
var
f:TextFile;
s:String;
begin
if opendialog1.execute then
begin
assignfile(f,opendialog1.filename);
reset(f);
while not eof(f) do
begin
readlan(s,f);
end;
closefile(f);
end;

1)یک متغیر از نوع textfile تعریف شده
2) از طریق یک دیالوگ فایل را معرفی می کنیم
3) با دستور AssignFile نام فایل را به متغیر textfile انتساب می دهیم
4) دستور Reset برای باز کردن فایل جهت خواندن و Rewrite جهت ساختن و نوشتن در فایل استفاده می شود
5) دستور eof فایل را تا انتها می خواند
6) دستور read ,Readln برای خواندن از فایل , دستور write,writeln برای نوشتن در فایل
7) دستور Closefile برای بستن فایل
توابعی که نام بردید مربوط به پاسکال هستند و چون دلفی مبتنی بر پاسکال هست ازشون پشتیبانی میکنه ، بیشتر اون توابع منسوخ شده هستند و استفاده ازشون مشکلاتی رو ایجاد میکنه که چندین بار به چشم دیدم ، اگر هدف خوندن فایل و ریختن تو متغییر هست از کلاس TStringList استفاده کنید .

kamran_14
چهارشنبه 06 اردیبهشت 1391, 09:22 صبح
توابعی که نام بردید مربوط به پاسکال هستند و چون دلفی مبتنی بر پاسکال هست ازشون پشتیبانی میکنه ، بیشتر اون توابع منسوخ شده هستند و استفاده ازشون مشکلاتی رو ایجاد میکنه که چندین بار به چشم دیدم ، اگر هدف خوندن فایل و ریختن تو متغییر هست از کلاس TStringList استفاده کنید .

مممنون می شم اگه یه مثال ساده از کلاس Tstringlist بزنید

Ananas
پنج شنبه 07 اردیبهشت 1391, 12:30 عصر
می شه یه مثال ساده بزنید

procedure TForm1.Button1Click(Sender: TObject);
var
ss : TStringStream;
s : string;
begin
s := 'MHD_1391_write in delphi.';
ss := TStringStream.Create();
ss.WriteString(s);
ss.WriteString(#13#10'line 2'#13#10'line 3');
ss.SaveToFile('c:\test.txt');
ss.Free;
//---------------------------
s := '';
ss := TStringStream.Create;
ss.LoadFromFile('c:\test.txt');
s := ss.ReadString(ss.Size);
ShowMessage(s);
//DeleteFile('c:\test.txt');
end;