PDA

Просмотр полной версии : [Помогите!] Вопрос с OpenDialog


ncdos
15.11.2012, 03:37
delete/

#Nike
15.11.2012, 03:56
procedure TForm1.Button1Click(Sender: TObject);
Var
Index : Integer;
SList : TStringList;
begin
SList := TStringList.Create;
if OpenDialog1.Execute
then SList.LoadFromFile(OpenDialog1.FileName);
For Index := 0 To SList.Count - 1
Do Memo1.Lines.Add(Slist.Strings[Index]);
end;
Как то так примерно

Relli
15.11.2012, 07:12
Вопрос - зачем?)
If OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Так по моему быстрее)

KlimVoroshilov
15.11.2012, 18:46
Хм, раз уж на то пошло..
Как загрузить в list box текст из txt файла, так что бы каждая строчка текстовика вписывалась в новую строчку listbox

Erstown
15.11.2012, 19:35
Хм, раз уж на то пошло..
Как загрузить в list box текст из txt файла, так что бы каждая строчка текстовика вписывалась в новую строчку listbox

var
f: TStringList;
i: integer;
begin
f:= TStringList.Create;
f.LoadFromFile('file.txt');
for i := 0 to f.Count-1 do
begin
ListBox1.Items.Add(f.Strings[i]);
end;
f.free;
end;

end.

Relli
16.11.2012, 19:43
Нужно загрузить файл весом более 30 mb в Memo, при загрузке программа висла. Решил загружать построчно с вызовом Application.ProcessMessages();.

Выходит построчно еще дольше загрузка.

И нужно еще в программе вывести результат загрузки строк. Делал это
Label3.Caption:=IntToStr(Memo1.Lines.Count-1);

С циклом не смог подсчет сделать.

Может есть другой способ загрузить большой файл в Memo? Нужно с результатом строк в Label. Подскажите.
1.Попробуй делать загрузку в потоке
2.Если построчно грузишь,то после загрузки можно узнать также(через каунт)

Relli
16.11.2012, 20:53
Не совсем понял, как загрузку сделать в потоке. Попробовал так
procedure zagruz;
begin
Form1.Memo1.Lines.LoadFromFile(Form1.OpenDialog1.F ileName);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Form1.OpenDialog1.Execute then
thr:=BeginThread(nil,1024,@zagruz,nil,0,thead);
end;

Тоже виснет программа при загрузке в Memo/ Поправьте плиз код, если ошибка.
Не могу помочь,т.к. никогда не вызывал так поток))

metraz
18.11.2012, 17:20
если виснет, значит работает vcl поток, а не дополнительный