![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузить строки из файла
MisterBin © (2002-05-13 19:45:00)имеется файл Load.txt с таким содержанием:
номер1|сообщение|12:00
Нужно чтобы "номер1", "сообщение", "12:00" были в разных Edit"ах на форме при клике на кнопку.
MisterBin (2002-05-14 16:06:00) [1]Теперь спасибо большое! Я в private не обявил Str.
Ещё раз спасибо и извините за то, что отнял столько времени
Song (2002-05-14 16:05:00) [2]Form1.Tag у Вас точно равно 0 ???
Song (2002-05-14 16:03:00) [3]У меня всё работает:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
Str:TStringList;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Str:=TStringList.Create;
Str.LoadFromFile("C:\Load.txt");
Timer1.Enabled:=True;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Str.Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
Var t:Integer;
begin
With TStringList.Create Do
try
Text:=Str.Strings[Tag];
Text:=StringReplace(Text,"|",#13#10,[rfReplaceAll]);
For t:=0 to 2 Do TEdit(FindComponent("Edit"+IntToStr(t+1))).Text:=Strings[t];
finally
Free;
end;
Tag:=Tag+1;
IF Tag>Str.Count then Timer1.Enabled:=False;
end;
end.
MisterBin (2002-05-14 15:56:00) [4]Извините, что забираю у вас время на глупые вопросы, но я сделал как вы сказали, объявил как TStringList, и всё равно как только начинает работать таймер выскакивает ошибка "Access violdation at..." и высвечивается строка
Text:=Str.Strings[Tag];
Song (2002-05-14 15:43:00) [5]>>Проверил только что - не работает.
Ну может мне ещё Вам нужно было целый модуль копировать с типами данных и переменными?
>>В переменную я добавил Str: TStrings - правильно?
Нет, не правильно. TStrings - это абстрактный клас.
Пишите TStringList. Вся функциональность в нём.
MisterBin (2002-05-14 15:38:00) [6]Проверил только что - не работает.
В переменную я добавил Str: TStrings - правильно?
Потом скомпилировал - нормально, но как только включается таймер, то выскакивает ошибка на моменте
Text:=Str.Strings[Tag];
Что не так?
MisterBin (2002-05-14 15:19:00) [7]Огромное спасибо!
Song (2002-05-13 22:04:00) [8]Забыл...
После Tag:=Tag+1; добавь IF Tag>Str.Count then Timer1.Enabled:=False;
Song (2002-05-13 22:02:00) [9]Здесь и программистом быть не нужно...
procedure TForm1.FormCreate(Sender: TObject);
begin
Str:=TStringList.Create;
Str.LoadFromFile("Load.txt");
Timer1.Enabled:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
Var t:Integer;
begin
With TStringList.Create Do
try
Text:=Str.Strings[Tag];
Text:=StringReplace(Text,"|",#13#10,[rfReplaceAll]);
For t:=0 to 2 Do TEdit(FindComponent("Edit"+IntToStr(t+1))).Text:=Strings[t];
finally
Free;
end;
Tag:=Tag+1;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Str.Free;
end;
Malder (2002-05-13 21:58:00) [10]MisterBin, зачем задавать ТАКИЕ вопросы ? Купи книжку. Серьезно. И не мучай ни себя, ни других. И не обижайся. Еще благодарить будешь (если, конечно, хочешь быть программистом)...
MisterBin (2002-05-13 21:54:00) [11]А как?? Я не очень хороший программист. Помогите пожалуйста.
Malder (2002-05-13 21:09:00) [12]MisterBin, издеваешься ? Может тебе еще чего написать ?
Сделай по аналогии с Song...
MisterBin (2002-05-13 21:03:00) [13]Больщое спасибо!
Если можете, ответьте на вопрос чуть посложнее:
Всё то же самое, как и в первом, только файл имеет следующее содержание:
Номер1|Сообщение|12:00
Номер2|Сообщение1|13:00
Номер3|Сообщение2|14:00
Как только первая строка загружена, то включается таймер, по истечению 10 секунд
Эдиты очищаются и загружается в них уже следующая строка и.т.д. пока не закончится.
А как закончится, то таймер выключается
Song (2002-05-13 19:54:00) [14]Блин браузер глюкнул. Edit1.Text:=Strings[0]; не нужно
Song (2002-05-13 19:53:00) [15]Procedure Button1Click(Sender:TObject);
Begin
With TStringList.Create Do
try
LoadFromFile("Load.txt");
Text:=StringReplace(Text,"|",#13#10,[rfReplaceAll]);
For t:=0 to 2 Do TEdit(FindComponent("Edit"+IntToStr(t+1))).Text:=Strings[t];
Edit1.Text:=Strings[0];
finally
Free;
end;
End;
P.S. При условии, что нужно данные занести в Edit1 .. Edit3. Если нет, то нужно заменить строку For .. Do простым присваиванием в нужные компоненты.