![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поченму не читает из фала типа 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]Бред полнейший!