Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 23:14   #1
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию Windows 7 функция GetFileSize

Доброе время суток!!!
Пришлось проверить работоспособность программы под Windows 7
И появилась довольно интересная проблема )))

точный размер файла = 1*263*612 байт

GetFileSize(FileHandle, nil) показывает 4*294*967*295

Может они что-то поменяли ?



============================

Собственно проблема появляется только если функция используется в библиотеке(dll)
в самой программе все отлично работает, хотя как бы и библиотека в XP работала...

Код:
function bOpenFile(FileName: PAnsiChar): Boolean;
begin
  bHandle := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  if bHandle <> 0 then
    Result := true
  else
    Result := false;
end;

function bGetRecCount(): Cardinal;
begin
  // Вот здесь GetFileSize возвращает ноль или еще что-нибуть но совсем не то что нужно
  Result := GetFileSize(bHandle, nil) div bBlockSize;
end;
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!

Последний раз редактировалось mihali4; 29.11.2009 в 00:30.
DarkEvil вне форума Ответить с цитированием
Старый 29.11.2009, 00:32   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Файлы записываются кластерами. Кластер имеет фиксировнный размер.
Так что не удивляйтесь, если файл с реальным размером в 128 байт в файловой системе даст вам размер 4096 байт...
mihali4 вне форума Ответить с цитированием
Старый 29.11.2009, 00:46   #3
DarkEvil
Форумчанин
 
Аватар для DarkEvil
 
Регистрация: 08.05.2009
Сообщений: 247
По умолчанию

Ну про кластера мы знаем, но тогда вопрос как узнать реальный размер файла? а не занимаемое им место...
собственно в вин ХП такой код работает...

=================================== ===========

Все проблемма решена.
Мой сайт
Цитата:
Сообщение от Scream In Darkness
Кровь не даёт покоя! Кровь не знает сна!
Кровь бежит на волю – Вены рвёт сама!

Последний раз редактировалось DarkEvil; 29.11.2009 в 01:02.
DarkEvil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правда ли что Windows xp 64 определяет болше Оперативки чем Windows xp 32 subbota Операционные системы общие вопросы 4 03.06.2012 17:29
UTF-8 в Windows-1251 - нужна функция motorway PHP 3 04.07.2009 15:28
Разница исполнения под Windows XP и Windows Server 2003? -Nast- Общие вопросы Delphi 0 02.06.2009 09:20
Проблемма с Windows Xp SP3 and Windows eXPended 2008 Feban Windows 5 25.12.2008 17:38
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50