![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический массив для структуры файла...
xyz © (2002-12-27 00:48:00)TMyfile = record
str : array of string;
end;
Это нельзя, а хочется...
Может быть кто-нибудь подскажет?
xyz (2002-12-30 01:01:00) [1]Sha ©
Как перемещаться?
+ или - 1
Кроме того, специфика файла будет такова, что в каждой записи будет ссылка на другую запись(это обязательное условие).
Возможно кто-то уже догадался, что я пытаюсь реализовать семантические сети с нуля.
Sha (2002-12-29 21:26:00) [2]xyz © (29.12.02 18:48)
Допустим, у тебя есть реализация того, что ты хочешь.
Ты пробовал дальше думать. Как, например будешь позиционироваться, передвигаться на следующую/предыдущую.
У меня были похожие проблемы. Не морочься. Используй BlockRead.
xyz (2002-12-29 18:48:00) [3]Текстовый файл - неприемлимо!
Он слишком долго работает и там нет великой и непобедимой команды seek();
Вот если бы текстовый файл с командой seek(); ...//размечтался
Danlicha (2002-12-29 01:42:00) [4]Имхо проще, если только строчи писать надо, пользоваться PChar-ом.
Kotka (2002-12-29 01:12:00) [5]Я вот только одного не пойму: нафиг корячиться со всякими
recordиblockwrite, если можно писать, как в обычный текстовый файл, или xyzpretty fly for that?
PVOzerski (2002-12-28 22:09:00) [6]2Кот Бегемот ©:
Вы будете смеяться, но sizeof(mypunyfile), независимо от packed, будет всегда равным 4, и mypunyfile будет содержать указатель на массив, т.е. будет иметь смысл лишь до окончания работы программы.
Кот Бегемот (2002-12-28 21:29:00) [7]Хотя в этом случае наверно лучше использовать не
recordаpacked record- хотя не уверен - что будет если в в записи будет несколько полей - как там с выравниванием на границу слова будет работать ???
Кот Бегемот (2002-12-28 21:23:00) [8]2PVOzerski © (28.12.02 20:26)
Да можно читать сразу в record
TMyfile = record
str : array of string;
end;
var
mypunyfile : TMyfile;
f: file;
begin
SetLength(mypunyfile.str, 180)
BlockRead(f, @mypunyfile , syzeof(mypunyfile){ или Length(mypunyfile.str) - надо попробовать :) } );
IMHO должно работать :)))
PVOzerski (2002-12-28 20:26:00) [9]Либо (если 255 символов на строку хватит), пользоваться shorstring, либо массивами of char, опять же фиксированной длины, либо (расширяя сказанное Котом Бегемотом ©) сохранять через BlockWrite сохранять для каждой строки сначала её длину, потом содержимое и в соответствующем порядке читать через blockread.
Кот Бегемот (2002-12-28 17:58:00) [10]Для такого крутого чувака как ты с таким классным ником:
BlockRead()
BlockWrite()
xyz (2002-12-28 14:01:00) [11]MBo,
нужно все реализовать без использования стандартных компонентов... Приложение почти консольное...
MBo (2002-12-27 06:30:00) [12]>xyz
TStringList не устроит?
ION T (2002-12-27 01:36:00) [13]Да не стрим там не влияет....я щас под шапочкой и без кайликса, посему исходной речи не толкну....ну массив там, выходит, содержит кучу 4байтовых указателей на реальные строки в памяти, так шо если писать то надо циклом обращаться к каждой строке массива причем к первому её елементу....ну нечто типа:
for i:=0 to High(MyArr) do
fileStream.Write(MyArr[i][1], length(MyArr[i]))
xyz (2002-12-27 01:27:00) [14]А как это реализвать? я лучше понимаю не русскую речь, а исходный текст :))
а
может быть лучше использовать stearm, а не string? только опять же как это сделать?
ION T (2002-12-27 01:24:00) [15]Ну так стримом вы сохраняете массив указателей на строку....да еще и 17ю...
xyz (2002-12-27 01:10:00) [16]угу, а Вы попробуйте теперь сохранить такое в файл...
Он просто требует указать сколько строчек в массиве!
TMyfile = record
str : array[0..10] of string;
end;
Вот чего он требует, а мне надо без...
ION T (2002-12-27 01:02:00) [17]Не могу понять великого тайного смысла в записи состоящей из аж одного динамического массива динамических строк...
HelloWordAND (2002-12-27 00:56:00) [18]Незнаю, у меня никаких проблем, даже не "тявкнул". Может ты Type впереди не поставил?