Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с типизированным файлом. Size(MyFile) 
:(
    Опции темы
ne0n
Дата 12.5.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Записываю я в файл некие данные. Порывшись в DRKB узнал про Size, которая возрашает кол-во байт в файле. Вобщем либо я туплю либо еще что-то, но не как не могу вкурить, как ей воспользоваться. Подскажите. Плиз .  

Это сообщение отредактировал(а) ne0n - 12.5.2006, 18:16
PM MAIL ICQ   Вверх
drkot
Дата 12.5.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



В типизированых файлах Size возвращает не количество байт, а количество структур (записей) 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ne0n
Дата 12.5.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(drkot @  12.5.2006,  18:18 Найти цитируемый пост)
В типизированых файлах Size возвращает не количество байт, а количество структур (записей) 

Ну в смысле я и это хотел сказать, маленько попутал.
 
PM MAIL ICQ   Вверх
drkot
Дата 12.5.2006, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



домножай полученое значение на размер записи и будет  smile 
кста seek работает точно также. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
ne0n
Дата 12.5.2006, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(drkot @  12.5.2006,  18:29 Найти цитируемый пост)
домножай полученое значение на размер записи и будет  smile 

Всмысле? Примерчик моно?

Seek он переходит на заданное кол-во.
 
PM MAIL ICQ   Вверх
Poseidon
Дата 12.5.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Пользуйся лучше потоками и все будет чики smile

Код

var Stream: TMemoryStream;
begin
Stream:= TMemoryStream.Create;
try
Stream.LoadFromFile('youfile.lol');
ShowMessage(IntToStr(Stream.Size))
finally Stream.Free; end;
end;
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
drkot
Дата 12.5.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(ne0n @  12.5.2006,  18:32 Найти цитируемый пост)
Seek он переходит на заданное кол-во.

да именно так в заданую позицию.

пример ищи с хелпе. помоему такм все понятно. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Yanis
Дата 12.5.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



ne0ndrkot
Коллеги, что за функция Size? Такой функции в языке Delphi я не знаю, но я знаю функцию GetFileSize, которая используется в Delphi для определения размеров файлов. 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Nickel
Дата 13.5.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 7.2.2006

Репутация: 2
Всего: 4



Видимо имелась ввиду функция FileSize, но я бы тоже, например, предпочёл GetFileSize. 
PM   Вверх
Guedda
Дата 13.5.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Еще есть для структур SizeOf 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
ne0n
Дата 13.5.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(Yanis @  12.5.2006,  23:14 Найти цитируемый пост)
ne0n, drkot
Коллеги, что за функция Size? Такой функции в языке Delphi я не знаю, но я знаю функцию GetFileSize, которая используется в Delphi для определения размеров файлов.  


Она есть (во всяком случии DRKB так написано):

Цитата

Теперь функции работы с файлом: 

read(f,b); - прочитать 1 байт 
write(f,b); - записать 1 байт 
seek(f,100); - поставить текущее положение считывания/записи на сотый байт 
Size(f); - прочитать количество байт в файле. 
Eof(f); - узнать не являетсмя ли байт последним 

Все эти функции не работают с файлами большими 2 Gb. 


Цитата(Guedda @  13.5.2006,  13:28 Найти цитируемый пост)
Еще есть для структур SizeOf  


поподробней... 
PM MAIL ICQ   Вверх
Guedda
Дата 13.5.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Получает размер в байтах структуры...
Допустим
Код

type
  Trec = record
    Mama : Byte;
    Papa : Byte;
  end;

//...

begin
  SizeOf(TRec);
end;

Вернет число 2 (два байта).

А вообще... Что именно нужно? Подробнее... Может мы тебя не так понимаем... 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
ne0n
Дата 14.5.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(Guedda @  13.5.2006,  16:04 Найти цитируемый пост)
А вообще... Что именно нужно? Подробнее... Может мы тебя не так понимаем... 


Ок. попытаюсь объяснить:

Есть файл. В него постоянно дописываюся значения. А точнее записывается целая структура типа
которой привел Guedda. При работе с такими файлами  чтобы дописать значение в конец нужно сначало при помощи Seek перейти на последний байт(а в моем случие на последнию структуру) и потом уже писать,  иначе произойдет перезапись первых байтов(структур).

Вроде усе smile 
PM MAIL ICQ   Вверх
Yanis
Дата 14.5.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Nickel @  13.5.2006,  13:05 Найти цитируемый пост)
Видимо имелась ввиду функция FileSize, но я бы тоже, например, предпочёл GetFileSize.

К сведению FileSize в своей работе и использует функцию Windows API GetFileSize.

Цитата(ne0n @  13.5.2006,  14:54 Найти цитируемый пост)
Она есть (во всяком случии DRKB так написано):
Судя по всему бональная ошибка smile


Цитата(ne0n @  14.5.2006,  22:13 Найти цитируемый пост)
Есть файл. В него постоянно дописываюся значения. А точнее записывается целая структура типа
которой привел Guedda. При работе с такими файлами  чтобы дописать значение в конец нужно сначало при помощи Seek перейти на последний байт(а в моем случие на последнию структуру) и потом уже писать,  иначе произойдет перезапись первых байтов(структур).
Ну так и переходи с помощью Seek в конец файла, в чём загвоздка? Примерно так:
Код
Seek(FileSize(f));
  

Это сообщение отредактировал(а) Yanis - 14.5.2006, 21:27


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
ne0n
Дата 14.5.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: 1
Всего: 11



Цитата(Yanis @  14.5.2006,  21:24 Найти цитируемый пост)
Ну так и переходи с помощью Seek в конец файла, в чём загвоздка? 


Енто конечно хорошо, но мне еще надо знать кол-во структур в файле.
 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1082 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.