Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
14-73377
VID
2002-04-15 22:47
2002.05.23
Родная Delphi5 чего-то не ставится :(((


7-73423
Kozhanov
2002-02-27 16:24
2002.05.23
Как узнать какая ОС ?


3-72997
Pavel_S
2002-04-20 16:24
2002.05.23
INTERBASE и тормоза


1-73192
Дремучий
2002-05-11 16:43
2002.05.23
Ищется компонент(а/ы)...


1-73240
Garry
2002-05-10 10:35
2002.05.23
Как отобразить сообщение при наведении мыши на объект?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский