![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток!
Столкнулся с такой вот проблемой! Есть код, который выводит список текстовых файлов определённой папки в ListBox: Код:
Procedure ScanDir(StartDir: String; Mask:string; List:TStrings);
Var SearchRec : TSearchRec;
Begin
IF Mask ='' then Mask:= '*.txt*';
IF StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
IF FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
Begin
Repeat
Application.ProcessMessages;
IF (SearchRec.Attr and faDirectory) <> faDirectory then
List.Add(SearchRec.Name) else
IF (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
Begin
List.Add(StartDir + SearchRec.Name + '\');
ScanDir(StartDir + SearchRec.Name + '\',Mask,List);
End;
Until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
End;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
ScanDir(ExtractFilePath(ParamStr(0)),'',ListBox1.Items);
Label1.Caption := IntToStr(ListBox1.Items.Count);
end;Что необходимо сделать, чтобы вывести содержимое текстового файла (например, в RichEdit), который выделен в ListBox? Заранее благодарен! |
|
#2
|
|||
|
|||
|
Код:
var
fL:TextFile;
TMP:String;
begin
AssignFile(fL,ListBox1.Items[ListBox1.ItemIndex]);
Reset(fL);
while not eof(fL) do
begin
Readln(fL,TMP);
RichEdit1.Lines.Add(TMP);
end;
end |
|
#3
|
||||
|
||||
|
Не знаю насчет RichEdit, но в Memo есть замечательный метод Memo1.LoadFromFile(Filename); Думаю, в RE тоже должен быть.
|
|
#4
|
|||
|
|||
|
Цитата:
![]() |
|
#5
|
|||
|
|||
|
Вот еще появился вопрос такого характера!
Теперь я пытаюсь сохранить файл из RichEdit в txt, используя вот такой вот код: Код:
procedure TForm1.Button2Click(Sender: TObject); var f: file; s: string; begin s := RichEdit1.Text; RichEdit1.PlainText:=True; AssignFile(f, 'text.txt'); Rewrite(f); BlockWrite(f, PChar(s)^, Length(s)); CloseFile(f); end; Но в созданном txt файле показуется куча непонятных символов! Как этого можно избежать? Может есть какое-то форматирование? |
|
#6
|
||||
|
||||
|
Код:
// не так BlockWrite(f, PChar(s)^, Length(s)); // так Write(f, s); |
|
#7
|
|||
|
|||
|
Цитата:
|
|
#8
|
||||
|
||||
|
Файл должен быть формата text
Код:
var f:text; |
|
#9
|
|||
|
|||
|
Цитата:
Последний раз редактировалось jekahm, 16.06.2011 в 02:27. |
|
#10
|
|||
|
|||
|
Цитата:
|
|
#11
|
||||
|
||||
|
ReadLn предполагает, что файл разбит на строки и читает построчно. Смотри какой у тебя текстовый файл, в данном случае, исходя из твоих слов, у тебя файл состоит из одной строки.
Последний раз редактировалось angvelem, 16.06.2011 в 02:55. |
|
#12
|
|||
|
|||
|
Цитата:
А вы пробовали, у вас работает? Просто может только у меня проблема! |
|
#13
|
|||
|
|||
|
Кстати, если быть точным, то считывается не первая, а последняя строка!
|
|
#14
|
||||
|
||||
|
Приводи код, который читает текстовый файл. Смотри http://www.delphisources.ru/forum/sh...78&postcount=2
Если вот это: Код:
AssignFile(fL,ListBox1.Items[ListBox1.ItemIndex]); Последний раз редактировалось angvelem, 16.06.2011 в 03:27. |