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

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

Поченму не читает из фала типа TStrings [D7, WinXP]


Nad89 ©   (2005-01-17 17:09:00) 

Для записи/чтения использую код...Теоретически в мемо после нажатия второй кнопы должно быть "Lazha", а практически - нифига. Че у меня не так?

type DataBase=array[0..100] of TStrings;
...
//---Создает файл типа DataBase...
procedure TForm1.Button1Click(Sender: TObject);
var db:DataBase; f:file of DataBase;
begin
db.Data[0]:=TStringList.Create;
db.Data[0].Add('Lazha');
AssignFile(f,'c:\sef.heh');
Rewrite(f);
Write(f,db);
CloseFile(f);

end;
//Читает етот файл....
procedure TForm1.Button2Click(Sender: TObject);
var db:DataBase; f:file of DataBase;
begin
db.Data[0]:=TStringList.Create;
AssignFile(f,'C:\sef.heh');
Reset(f);
Read(f,db);
Memo1.Lines.AddStrings(db.Data[0]);
CloseFile(f);
end;


sniknik   (2005-01-18 00:10:00) [1]

Anatoly Podgoretsky ©   (17.01.05 21:04) [6]
а чего нет? он же его предварительно обьявил (этот тип).

ну и что что оно означает совершенно другое? ;о))


Anatoly Podgoretsky   (2005-01-17 21:04:00) [2]

var db:DataBase; f:file of DataBase;
И ты утверждаешь, что это у тебя откомилировалось?


raidan   (2005-01-17 18:49:00) [3]

Бред полнейший! (c)

>begin...end ©   (17.01.05 18:12) [3]
Именно так.
В memo можно хранить вообще весь список строк и не использовать никакие type database=array...


PVOzerski   (2005-01-17 18:30:00) [4]

С длинными строками вообще нужно быть осторожными, так как у них нет фиксированной длины, а переменная - по сути, указатель. По сути указатель и любой класс - в том числе и TStrings. Так что там дело до запис строк в файл просто не дойдет. А tStrings - к тому же еще и имеет абстрактные методы, он не приспособлен ни для чего, кроме как быть базовым классом для других.


begin...end   (2005-01-17 18:12:00) [5]

> Nad89 ©   (17.01.05 17:09)

А если нужно загрузить содержимое файла в Memo - так тут ещё проще, поскольку у Memo уже есть поле типа TStrings. Так что нужно просто написать: Memo1.Lines.LoadFromFile('c:\sef.heh').

[2] и [3] относится к случаю, если файл - текстовый. Если же он типизированный или нетипизированный, то TStrings тут вообще ни при чём.


begin...end   (2005-01-17 18:03:00) [6]

> Nad89 ©   (17.01.05 17:09)

> Теоретически в мемо после нажатия второй кнопы должно быть
> "Lazha", а практически - нифига.

Вы заблуждаетесь. Она (лажа) как раз есть. Практически. И ещё до нажатия второй кнопы.

Вам что нужно-то? Прочитать файл в экземпляр TStrings? Для этого есть специальный метод - TStrings.LoadFromFile.

Пример:

var
 Strings: TStrings;
begin
 Strings := TStringList.Create;
 try
   Strings.LoadFromFile('c:\sef.heh')
 finally
   Strings.Free
 end
end.


Amoeba   (2005-01-17 17:12:00) [7]

Бред полнейший!


Наверх

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