Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загрузить строки из файла


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 простым присваиванием в нужные компоненты.


Наверх

Титульная страница Поиск, карта сайта Написать письмо