Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
ВнизЗагрузить строки из файла Найти похожие ветки
← →
MisterBin (2002-05-13 19:45) [0]имеется файл Load.txt с таким содержанием:
номер1|сообщение|12:00
Нужно чтобы "номер1", "сообщение", "12:00" были в разных Edit"ах на форме при клике на кнопку.
← →
Song (2002-05-13 19:53) [1]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 простым присваиванием в нужные компоненты.
← →
Song (2002-05-13 19:54) [2]Блин браузер глюкнул. Edit1.Text:=Strings[0]; не нужно
← →
MisterBin (2002-05-13 21:03) [3]Больщое спасибо!
Если можете, ответьте на вопрос чуть посложнее:
Всё то же самое, как и в первом, только файл имеет следующее содержание:
Номер1|Сообщение|12:00
Номер2|Сообщение1|13:00
Номер3|Сообщение2|14:00
Как только первая строка загружена, то включается таймер, по истечению 10 секунд
Эдиты очищаются и загружается в них уже следующая строка и.т.д. пока не закончится.
А как закончится, то таймер выключается
← →
Malder (2002-05-13 21:09) [4]MisterBin, издеваешься ? Может тебе еще чего написать ?
Сделай по аналогии с Song...
← →
MisterBin (2002-05-13 21:54) [5]А как?? Я не очень хороший программист. Помогите пожалуйста.
← →
Malder (2002-05-13 21:58) [6]MisterBin, зачем задавать ТАКИЕ вопросы ? Купи книжку. Серьезно. И не мучай ни себя, ни других. И не обижайся. Еще благодарить будешь (если, конечно, хочешь быть программистом)...
← →
Song (2002-05-13 22:02) [7]Здесь и программистом быть не нужно...
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;
← →
Song (2002-05-13 22:04) [8]Забыл...
После Tag:=Tag+1; добавь IF Tag>Str.Count then Timer1.Enabled:=False;
← →
MisterBin (2002-05-14 15:19) [9]Огромное спасибо!
← →
MisterBin (2002-05-14 15:38) [10]Проверил только что - не работает.
В переменную я добавил Str: TStrings - правильно?
Потом скомпилировал - нормально, но как только включается таймер, то выскакивает ошибка на моменте
Text:=Str.Strings[Tag];
Что не так?
← →
Song (2002-05-14 15:43) [11]>>Проверил только что - не работает.
Ну может мне ещё Вам нужно было целый модуль копировать с типами данных и переменными?
>>В переменную я добавил Str: TStrings - правильно?
Нет, не правильно. TStrings - это абстрактный клас.
Пишите TStringList. Вся функциональность в нём.
← →
MisterBin (2002-05-14 15:56) [12]Извините, что забираю у вас время на глупые вопросы, но я сделал как вы сказали, объявил как TStringList, и всё равно как только начинает работать таймер выскакивает ошибка "Access violdation at..." и высвечивается строка
Text:=Str.Strings[Tag];
← →
Song (2002-05-14 16:03) [13]У меня всё работает:
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.
← →
Song (2002-05-14 16:05) [14]Form1.Tag у Вас точно равно 0 ???
← →
MisterBin (2002-05-14 16:06) [15]Теперь спасибо большое! Я в private не обявил Str.
Ещё раз спасибо и извините за то, что отнял столько времени
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.23;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c