PDA

View Full Version : باز کردن فایل txt در لیبل



1072300
دوشنبه 24 خرداد 1389, 23:30 عصر
سلام به همه اساتید
با چه کدی می توانم تمام مطالب یک فایل txt را در یک لیبل نشان دهم این فایل در پوشه ای در کنار فایل exe برنامه قرار دارد. :ناراحت::گیج:

mehrpars
سه شنبه 25 خرداد 1389, 00:04 صبح
سلام ،
با FileStream متن فایل رو بخونید و توی lable بریزید
لیبل رو هم auto size شو false کنید!!!!
حالا یا مشکل توی file stream دارید یا ....

SAASTN
سه شنبه 25 خرداد 1389, 00:09 صبح
چرا تو Label؟ مگه Memo مشکلی داره؟

Mahmood_M
سه شنبه 25 خرداد 1389, 01:07 صبح
می تونید از TextFile هم استفاده کنید ، یک متغیر از نوع " TextFile " تعریف کنید ، با دستور " AssignFile می تونید یک فایل متنی رو بهش اختصاص بدید ، بعد از اختصاص فایل با دستور Reset فایل رو به ابتدا می برید و بعد می تونید به وسیله ی ReadLn از فایل اطلاعات رو بخونید و در یک متغیر قرار بدید ، در نهایت هم با CloseFile ، فایل باز شده رو می بندید ، این هم یک نمونه :
var
TF : TextFile;
Text : String;
begin
AssignFile(TF, 'MyFile.txt');
Reset(TF);
while not Eof(TF) do
begin
ReadLn(TF, Text);
Memo.Lines.Add(Text);
end;
CloseFile(TF);
end;
دستور بالا فایل " MyFile.txt رو باز می کنه از اول تا انتهای فایل رو خط به خط می خونه و در Memo قرار میده ( به جای Memo می تونید از Label استفاده کنید ) و در نهایت هم فایل رو می بنده ...

برای بدست آوردن مسیر جاری برنامه هم می تونی از ExtractFilePath با مقدار ورودی Application.ExeName استفاده کنی ، تابع ExtractFilePath مسیر کامل ( همراه با نام ) یک فایل رو می گیره و مسیر پوشه ای که فایل مورد نظر درش قرار داره رو بر می گردونه ، مقدار Application.ExeName هم مسیر کامل برنامه همراه با نام اون رو بر می گردونه ...

موفق باشید ...

1072300
سه شنبه 25 خرداد 1389, 23:40 عصر
متشکرم از همه دوستان
تا حدودی مشکل حل شد اما یک مشکل جدید به وجود آمدم اگر در فایل تکست یک خط فاصله ایجا شود برنامه باقی متن را به داخل لیبل یا memo نمی برد سوال بنده این است که آیا می شود با تعریف مثلا ' ' یا " " برنامه تمام مطالب بین این علامت را به داخل لیبل یا memo ببرد.
متشکرم

Felony
چهارشنبه 26 خرداد 1389, 00:05 صبح
میتونید از کلاس TStringList استفاده کنید :

var
Str: TStringList;
begin
Str:= TStringList.Create;
try
Str.LoadFromFile('FileName');
Memo1.Text:= Str.Text;
finally
Str.Free;
end;
end;

SAASTN
چهارشنبه 26 خرداد 1389, 00:17 صبح
میتونید از کلاس TStringList استفاده کنید :
کدی که گذاشتید نسبت به این کد ارجحیتی داره؟:

Memo1.Lines.LoadFromFile(FileName);

Felony
چهارشنبه 26 خرداد 1389, 00:32 صبح
کدی که گذاشتید نسبت به این کد ارجحیتی داره؟:

Memo1.Lines.LoadFromFile(FileName);

خیر ! ، سوال کاربر در مورد لیبل بود، شئ لیبل هم همچین متدی نداره ، شما در پست اولتون نظر کاربر رو به Memo جلب کردید و آقا محمود هم کدشون رو با همون شئ Memo نوشتن من هم دیگه حواسم پرت شد و همون Memo رو در نظر گرفتم ، برای بارگزاری متن در لیبل ( سوال کاربر ) از کدی که قرار داده شد استفاده کنید در غیر این صورت برای Memo همون متد LoadFromFile کافی هست .

majidbestgame
چهارشنبه 26 خرداد 1389, 00:56 صبح
درود بر دوستان....
به قول آقا مجتبی کاربر میخواست که فایل متنی را در یک label باز کنید که در این شرایط متد loadfromfile دیگه این جا صدق نمیکنه....و از طرفی دیگه کاربر نمیخواد از memo استفاده کنه بنده براتون یک کد میزارم اگه دیدید مشگلی نیست استفاده کنید:لبخند:


procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile;
s:string;
begin
label1.Caption:='';
assignfile(f,extractfilepath(application.ExeName)+ '\text.txt');
reset(f);
while not eof (f) do begin
readln(f,s);
label1.Caption:=label1.Caption + s + #13;
end;
closefile(f);
end;


کد بالا مربوط به کلیک بر روی یک Button است حالا شما میتونید تو FormCreate یا هر بخشی خواستید استفاده کنید...این کد یک فایل متنی کنار برنامه با نام text.txt رو باز میکنه و درون یک label نشون میده البته باید به یاد داشت که AutoSize لیبل رو False کنید و WordWrap رو به True تغییر بدین...موفق باشین

majid_ramak
چهارشنبه 26 خرداد 1389, 10:44 صبح
function GetTextFromFile(AFile: string; var Returnstring: string): Boolean;
var
FileStream: TFileStream;
begin
Result := False;
if not FileExists(AFile) then Exit;
FileStream := TFileStream.Create(AFile, fmOpenRead);
try
if FileStream.Size <> 0 then
begin
SetLength(Returnstring, FileStream.Size);
FileStream.Read(Returnstring[1], FileStream.Size);
Result := True;
end;
finally
FileStream.Free;
end;
end;




procedure TForm2.Button1Click(Sender: TObject);
var
FStr: string;
begin
if GetTextFromFile(ExtractFilePath(Application.ExeNam e) + 'Test.txt', FStr) then
begin
Label1.Caption:= FStr;
end;
end;

1072300
چهارشنبه 26 خرداد 1389, 20:54 عصر
درود به همه شما عزیزان دست گلتان درد نکنه متشکرم مشکل کاملا حل شد
فقط یک سوال دارم
آیا می شود کاری کرد که متن داخل لیبل از دو طرف تراز شود مانند گزینه justify دربرنامه ورود word .