Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.063 c
3-1144221294
RomanH
2006-04-05 11:14
2006.06.04
Репликация данных


2-1148066031
Призрак
2006-05-19 23:13
2006.06.04
В чём разница между Form1.CLOSE и Form1.HIDE ?


15-1146150464
oldman
2006-04-27 19:07
2006.06.04
У кого есть "M.A.S.H." ???


15-1147428597
_iceman_
2006-05-12 14:09
2006.06.04
ADSL модемы


15-1146854038
Постоялец
2006-05-05 22:33
2006.06.04
Освоение 1C