Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.23;
Скачать: CL | DM;

Вниз

Загрузить строки из файла   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
3-73056
qqqq
2002-04-27 12:13
2002.05.23
TDBListBox - MultiSelect?


14-73377
VID
2002-04-15 22:47
2002.05.23
Родная Delphi5 чего-то не ставится :(((


4-73436
Rammst
2002-03-19 06:17
2002.05.23
Программа поверх всех окон


1-73213
kingdom
2002-05-14 18:58
2002.05.23
COM + TService


1-73125
greenrul
2002-05-12 16:49
2002.05.23
Компонента Архивации