Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизTFileStream или File Of ... Найти похожие ветки
← →
AlexanderMS © (2006-05-08 19:10) [0]Что лучше? Что предпочитают мастера? TFileStream или File Of something?
← →
Algol (2006-05-08 19:14) [1]Лучше Stream.
← →
ArtemESC © (2006-05-08 19:17) [2]TFileStream - это класс, как и большинство классов, призван обеспечить
удобство доступа к данным - что позволяет программеру не обращать
внимание на детали работы с файлами...
← →
Anatoly Podgoretsky © (2006-05-08 20:25) [3]Это разные по уровню вещи, низкоуровневый TFileStream и высоуровневый типизированый файл. Конечно через низкий уровень можно эмулировать высокий, только зачем?
← →
antonn © (2006-05-08 20:26) [4]первое
← →
DVM © (2006-05-08 21:09) [5]CreateFile
← →
TUser © (2006-05-08 21:33) [6]Иногда textfile, иногда TStringList.
← →
Некто © (2006-05-08 21:48) [7]Пиво лучше
← →
antonn © (2006-05-09 06:38) [8]не факт...
← →
palva © (2006-05-09 10:57) [9]Лучше просто File с большими буферами (гусары, молчать!)
← →
Lamer@fools.ua © (2006-05-09 11:06) [10]>TFileStream или File Of something?
Зависит от задачи. К тому же, есть и другие варианты.
← →
Algol (2006-05-09 11:09) [11]
> Это разные по уровню вещи, низкоуровневый TFileStream и
> высоуровневый типизированый файл. Конечно через низкий уровень
> можно эмулировать высокий, только зачем?
Вообще-то основное преимущество FileStream в том, что его можно передавать в процедуру, а file of - нет.
← →
wicked © (2006-05-09 11:38) [12]
> Вообще-то основное преимущество FileStream в том, что его
> можно передавать в процедуру, а file of - нет.
основное преимущество FileStream то, что его можно присвоить TStream и забыть о том, с чем именно мы имеем дело....
нащелкать кучку методов LoadFromStream и SaveToStream, и жить долго и счастливо.... :)
← →
antonn © (2006-05-09 11:42) [13]а еще у него огромное преимущество в том, что я знаю как с ним работать, а как с file of - нет.
:)
← →
palva © (2006-05-09 12:04) [14]Algol (09.05.06 11:09) [11]
> Вообще-то основное преимущество FileStream в том, что его можно передавать в процедуру, а file of - нет.
Нельзя разве? А я не знал. Сейчас попробую.
← →
palva © (2006-05-09 12:18) [15]> Нельзя разве? А я не знал. Сейчас попробую.
Оказывается, можно!
{$APPTYPE CONSOLE}
type
Tfi = File of Integer;
Tf = File;
var
fi: Tfi;
f: Tf;
buf, i: Integer;
procedure p(var fi: Tfi; var f: Tf);
begin
i := 777;
buf := 0;
Write(fi, i);
CloseFile(fi);
BlockRead(f, buf, 1);
WriteLn(buf);
end;
begin
AssignFile(fi, "temp.bin");
AssignFile(f, "temp.bin");
Rewrite(fi);
Reset(f, 4);
p(fi, f);
CloseFile(f);
end.
← →
Algol (2006-05-10 12:39) [16]
> > Нельзя разве? А я не знал. Сейчас попробую.
> Оказывается, можно!
Выдержка из хелпа:
"File types are not allowed as value parameters and as the base type of a file type itself. They are also not allowed as function return types, and you cannot assign them - those errors will however produce a different error message."
т.е. Передавать по значению, либо присваивать, либо возвращать как результат функции - нельзя.
← →
palva © (2006-05-10 13:04) [17]Algol (10.05.06 12:39) [16]
> File types are not allowed as value parameters
Не разрешены как параметры val - вот я и не использую слово val.
← →
Marser © (2006-05-10 20:30) [18]> [13] antonn © (09.05.06 11:42)
> а еще у него огромное преимущество в том, что я знаю как
> с ним работать, а как с file of - нет.
> :)
Фигасе! Так ты родом не из ТР?
← →
antonn © (2006-05-10 20:41) [19]Marser © (10.05.06 20:30) [18]
Фигасе! Так ты родом не из ТР?
не-а:)
кстати, актуально http://delphimaster.net/view/2-1147265255/
:)
← →
Cash © (2006-05-10 21:15) [20]> кстати, актуально http://delphimaster.net/view/2-1147265255/
Антоха ламерюга!!!! :)))))))
> Фигасе! Так ты родом не из ТР?
В TP какраз нет TStream, следовательно он не от туда.
А с другой стороны, перейдя на Delphi я благополучно забыл что такое
File of ..., незачем оно просто покуда TStream с потомками есть.
Там даже текстовики удобнее читать! Можно строки разбивать не по #13,
а по любому символу, ";" к примеру!
← →
antonn © (2006-05-10 21:22) [21]Cash © (10.05.06 21:15) [20]
тс-с-с, никому не говори:)
я просто с этим никогда не сталкивался, всегда прекрасно обходился средствами Стримов, а тут, блин, какой то указатель фигов, да еще и чтение по байту... - не нравится мне так:)
← →
Cash © (2006-05-10 21:31) [22]> тс-с-с, никому не говори:)
:D :D :D (под столом валялся!)
А зачем тебе чесговоря надо из Stram-а в какой то там File of перекидывать???
Там же с помощью TFileStream и CopyFrom все кульно делается!
На всяк случай подскажу, мало ли что!
var
F: File of byte;
b: byte;
begin
AssignFile(F,"C:\Boot.ini"); // Нужен для связывания переменной с путем файла
Rewrite(F); // Открывает файл и обнуляет его размер
// Ну с стримом ты разберешься, а далее - копирование
While Stream.Position <> Stream.Size do begin
Steam.Read(b,1);
Wtrite(F,b);
end;
end;
← →
Slym © (2006-05-11 07:17) [23]Чем вам так не нравится
FileStream.ReadBuffer(MyRec,SizeOF(TMyRec));?
← →
antonn © (2006-05-11 09:31) [24]Cash © (10.05.06 21:31) [22]
есть класс, работающий с файлом. Он грузит файл с диска.
у меня же файл сжат(zlib), я его распаковываю в TMemorystream, и оттуда мне нужно, не сохраняя на диск, передать в программу. Т.е. без дополнительного файла на диске. Да и вообще, не нравится мне этот Assign:)
ЗЫ блин, получилось, убил я этот file of и все следы его пребывания:) Слава TMemorystream!! :)
ЗЗЫ просто с eof() непонятка вышла
← →
Slym © (2006-05-11 10:17) [25]antonn © (11.05.06 9:31) [24]
Если работа однопроходная, на фига его предварительно распаковывать, (ZLibStream)
← →
clickmaker © (2006-05-11 13:23) [26]настоящие мастера предпочитают Int21 )
← →
antonn © (2006-05-11 13:43) [27]Slym © (11.05.06 10:17) [25]
скорость критична.
у меня несколько таких файлов в памяти, и переодически их нужно загонять в класс. А распаковка, все таки, процесс ресурсоемкий:)
я при запуске приложения их в массив стримов распаковываю и загоняю.
← →
Cash © (2006-05-11 13:59) [28]antonn © (11.05.06 13:43) [27]:
А класс тот - твой???
Сделай версию 2.0 на TFileStream! :)
В конце концов файл одной структуры получается и малость не важно
с помощью File of или TFileStream он получается.
... или у таби прога на Pas-е под DOS-ом крутится???
← →
antonn © (2006-05-11 17:55) [29]Cash © (11.05.06 13:59) [28]
А класс тот - твой???
не мой, но "открытый", под Дельфи.
> Сделай версию 2.0 на TFileStream! :)
блин, да мне не надо файлстрим, у меня мелкие файлы упакованы, я их в памяти держу распакованными, для более быстрого доступа. И сохранять мне их нельзя во время работы:)
← →
Cash © (2006-05-11 19:31) [30]Непонял... 8)
А зачем же тебе тогда File of, ведь это же подразумивает чтение или
сохранение, одним словом работу с файлом.
(торможу, ясное дело, но все же интересно, вдруг я знаю что надо)
← →
antonn © (2006-05-11 20:02) [31]File of был в оригинале:) В оригинале класс читал файл с диска. А мне не надо с диска:) Потому что тогда файл гораздо большего размера нужен, а так я использую сжатый:)
при этом чтение велось неравными блоками, указатель "мелькал" по всему юниту и хитро вычислялась следующая позиция, и меня это сначала сбивало с толку. А пока указатель бегал, внутренние структуры класса заполнялись (класс работает с midi-файлами, разбивает их на инструментальные дорожки). Но заклинило меня еще больше, возомнил file of byte динамическим массивом, и пытался в него грузануть из памяти:)
Теперь file of похоронен и память он нем будет храниться вечно:)
← →
Cash © (2006-05-11 20:13) [32]Вот... это верное решение!!! :)))
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.042 c