Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1147192434
ArtemESC
2006-05-09 20:33
2006.06.04
Что нехватает современным 3D мирам ...


2-1147792001
AlexanderMS
2006-05-16 19:06
2006.06.04
С процедурами - лучше?


15-1147414681
Ega23
2006-05-12 10:18
2006.06.04
С Днём рождения! 12 мая


2-1147784851
ttt_111
2006-05-16 17:07
2006.06.04
Маска вывода вещественного числа.


3-1142248267
thvfrjd
2006-03-13 14:11
2006.06.04
проблема с DBLookupComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский