Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

[Warning] Crc32.pas(140): Variable InFile might not have been!   Найти похожие ветки 

 
Dr. Andrew   (2007-07-24 23:48) [0]

Доброго вечера! Мастера. Нашел неплохой пример для расчета  Crc32 и прилагаю его, но при компилировании получаю все время следующую ошибку:
[Warning] Crc32.pas(140): Variable "InFile" might not have been initialized. Как коректно ее исправить в этом коде (ошибка в выделенной строке? Всем спасибо!

unit Crc32;

interface

uses
  classes, Sysutils, Dialogs;

function FileCRC32(const FileName : String) : Cardinal;
function UpdateCRC32(InitCRC : Cardinal; BufPtr : Pointer; Len : Word) : LongInt;

implementation

type
 CRCTable = array [0..255] of Cardinal;

const
 BufLen = 32768;

 CRC32Table : CRCTable =
   ($00000000, $77073096, $ee0e612c, $990951ba,
    $076dc419, $706af48f, $e963a535, $9e6495a3,
    $0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988,
    $09b64c2b, $7eb17cbd, $e7b82d07, $90bf1d91,

    $1db71064, $6ab020f2, $f3b97148, $84be41de,
    $1adad47d, $6ddde4eb, $f4d4b551, $83d385c7,
    $136c9856, $646ba8c0, $fd62f97a, $8a65c9ec,
    $14015c4f, $63066cd9, $fa0f3d63, $8d080df5,

    $3b6e20c8, $4c69105e, $d56041e4, $a2677172,
    $3c03e4d1, $4b04d447, $d20d85fd, $a50ab56b,
    $35b5a8fa, $42b2986c, $dbbbc9d6, $acbcf940,
    $32d86ce3, $45df5c75, $dcd60dcf, $abd13d59,

    $26d930ac, $51de003a, $c8d75180, $bfd06116,
    $21b4f4b5, $56b3c423, $cfba9599, $b8bda50f,
    $2802b89e, $5f058808, $c60cd9b2, $b10be924,
    $2f6f7c87, $58684c11, $c1611dab, $b6662d3d,

    $76dc4190, $01db7106, $98d220bc, $efd5102a,
    $71b18589, $06b6b51f, $9fbfe4a5, $e8b8d433,
    $7807c9a2, $0f00f934, $9609a88e, $e10e9818,
    $7f6a0dbb, $086d3d2d, $91646c97, $e6635c01,

    $6b6b51f4, $1c6c6162, $856530d8, $f262004e,
    $6c0695ed, $1b01a57b, $8208f4c1, $f50fc457,
    $65b0d9c6, $12b7e950, $8bbeb8ea, $fcb9887c,
    $62dd1ddf, $15da2d49, $8cd37cf3, $fbd44c65,

    $4db26158, $3ab551ce, $a3bc0074, $d4bb30e2,
    $4adfa541, $3dd895d7, $a4d1c46d, $d3d6f4fb,
    $4369e96a, $346ed9fc, $ad678846, $da60b8d0,
    $44042d73, $33031de5, $aa0a4c5f, $dd0d7cc9,

    $5005713c, $270241aa, $be0b1010, $c90c2086,
    $5768b525, $206f85b3, $b966d409, $ce61e49f,
    $5edef90e, $29d9c998, $b0d09822, $c7d7a8b4,
    $59b33d17, $2eb40d81, $b7bd5c3b, $c0ba6cad,

    $edb88320, $9abfb3b6, $03b6e20c, $74b1d29a,
    $ead54739, $9dd277af, $04db2615, $73dc1683,
    $e3630b12, $94643b84, $0d6d6a3e, $7a6a5aa8,
    $e40ecf0b, $9309ff9d, $0a00ae27, $7d079eb1,

    $f00f9344, $8708a3d2, $1e01f268, $6906c2fe,
    $f762575d, $806567cb, $196c3671, $6e6b06e7,
    $fed41b76, $89d32be0, $10da7a5a, $67dd4acc,
    $f9b9df6f, $8ebeeff9, $17b7be43, $60b08ed5,

    $d6d6a3e8, $a1d1937e, $38d8c2c4, $04fdff252,
    $d1bb67f1, $a6bc5767, $3fb506dd, $048b2364b,
    $d80d2bda, $af0a1b4c, $36034af6, $041047a60,
    $df60efc3, $a867df55, $316e8eef, $04669be79,

    $cb61b38c, $bc66831a, $256fd2a0, $5268e236,
    $cc0c7795, $bb0b4703, $220216b9, $5505262f,
    $c5ba3bbe, $b2bd0b28, $2bb45a92, $5cb36a04,
    $c2d7ffa7, $b5d0cf31, $2cd99e8b, $5bdeae1d,

    $9b64c2b0, $ec63f226, $756aa39c, $026d930a,
    $9c0906a9, $eb0e363f, $72076785, $05005713,
    $95bf4a82, $e2b87a14, $7bb12bae, $0cb61b38,
    $92d28e9b, $e5d5be0d, $7cdcefb7, $0bdbdf21,

    $86d3d2d4, $f1d4e242, $68ddb3f8, $1fda836e,
    $81be16cd, $f6b9265b, $6fb077e1, $18b74777,
    $88085ae6, $ff0f6a70, $66063bca, $11010b5c,
    $8f659eff, $f862ae69, $616bffd3, $166ccf45,

    $a00ae278, $d70dd2ee, $4e048354, $3903b3c2,
    $a7672661, $d06016f7, $4969474d, $3e6e77db,
    $aed16a4a, $d9d65adc, $40df0b66, $37d83bf0,
    $a9bcae53, $debb9ec5, $47b2cf7f, $30b5ffe9,

    $bdbdf21c, $cabac28a, $53b39330, $24b4a3a6,
    $bad03605, $cdd70693, $54de5729, $23d967bf,
    $b3667a2e, $c4614ab8, $5d681b02, $2a6f2b94,
    $b40bbe37, $c30c8ea1, $5a05df1b, $2d02ef8d);

var
 Buf : array [1..BufLen] of Byte;

function UpdateCRC32(InitCRC : Cardinal; BufPtr : Pointer; Len : Word) : LongInt;
var
 crc : Cardinal;
 index : Integer;
 i : Cardinal;
begin
 crc := InitCRC;
 for i:=0 to Len-1 do begin
   index := (crc xor Cardinal(Pointer(Cardinal(BufPtr)+i)^)) and $000000FF;
   crc := (crc shr 8) xor CRC32Table[index];
 end;
 Result := crc;
end;

function FileCRC32(const FileName : String) : Cardinal;
var
  InFile : TFileStream;
  crc32 : Cardinal;
  Res : Integer;
  BufPtr : Pointer;
begin
 BufPtr := @Buf;
 crc32 := $FFFFFFFF;
 try
   InFile:=TFileStream.Create(FileName,fmShareDenyNone);
   Res:=InFile.Read(Buf,BufLen);
   While (Res <> 0) do
     begin
       crc32 := UpdateCrc32(crc32,BufPtr,Res);
       Res:=InFile.Read(Buf,BufLen);
     end;
   InFile.Destroy;
 except
  on E: Exception do
    begin
      if Assigned(InFile) then InFile.Free;
      ShowMessage(Format("При обработке файла [%s] вышла "+
        "вот такая oшибочка [%s]", [FileName, E.Message]));
    end;
  end;
 Result := not crc32;
end;

end.


 
Anatoly Podgoretsky ©   (2007-07-24 23:51) [1]

> Dr. Andrew  (24.07.2007 23:48:00)  [0]

Все правильно, может быть.
Компилятор не обманывает.
И вообще код грубый.


 
DrPass ©   (2007-07-24 23:52) [2]


> Как коректно ее исправить в этом коде (ошибка в выделенной
> строке? Всем спасибо!

warning переводится как "предупреждение", а не ошибка. Он тебя предупреждает, что переменная InFile, возможно, не была инициализирована. Как на это реагировать уже зависит от тебя.


 
Dr. Andrew   (2007-07-25 00:10) [3]

Спасибо за диалог. А Вы можете дать ссылку на лучший код? Буду весьма Вам признателен. Спасибо!


 
Anatoly Podgoretsky ©   (2007-07-25 00:11) [4]

> Dr. Andrew  (25.07.2007 00:10:03)  [3]

Да этот достаточно переписать.


 
Dr. Andrew   (2007-07-25 00:25) [5]

к сожалению, такого уровня у меня нет, можете дать ссылку на готовый код? Спасибо!


 
jack128_   (2007-07-25 02:00) [6]


> InFile:=TFileStream.Create(FileName,fmShareDenyNone);

эта строка должна быть ДО try


 
Dr. Andrew   (2007-07-25 02:16) [7]

CgСпабо! А компилятор еще ругается и на строчку: crc32 := $FFFFFFFF; Что тут не так?


 
{RASkov} ©   (2007-07-25 02:31) [8]

> [7] Dr. Andrew   (25.07.07 02:16)
> А компилятор еще ругается и на строчку

А что говорит?
Посмотри:
http://www.yandex.ru/yandsearch?rpt=rad&text=CRC32%2BDelphi
2,3 ссылка
Так-же вот этот файлик найди
http://www.google.com/search?ie=UTF-8&hl=ru&q=%63%48%61%73%68%2E%70%61%73
или ему подобный, их наверняка полно)


 
Dr. Andrew   (2007-07-25 02:43) [9]

спасибо! А по-поводу инсталлятора Inno Setip не подскажете. Как остановить инсталляцию по проверке некоторого кода в секции [code]?


 
Юрий Зотов ©   (2007-07-25 09:38) [10]


try
 InFile := TFileStream.Create(FileName, fmShareDenyNone);
 try
   Res := InFile.Read(Buf, BufLen);
   While Res <> 0 do
   begin
     crc32 := UpdateCrc32(crc32, BufPtr,Res);
     Res := InFile.Read(Buf, BufLen)
   end
 finally
   InFile.Free
 end
except
 on E: Exception do
   ShowMessage(Format("При обработке файла [%s] вышла " +
     "вот такая oшибочка [%s]", [FileName, E.Message]))
end


 
Юрий Зотов ©   (2007-07-25 09:40) [11]

[10] не смотреть. :о)


 
Юрий Зотов ©   (2007-07-25 09:44) [12]

Вернее, смотреть. Что со мной сегодня? :о)


 
Dr. Andrew   (2007-07-25 11:25) [13]

Спасибо!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.045 c
6-1171007451
inex
2007-02-09 10:50
2007.10.07
работа с IdFTP


2-1189406477
race1
2007-09-10 10:41
2007.10.07
Ожидание завершения программы из сервиса


15-1189020042
Gorez s borodoy
2007-09-05 23:20
2007.10.07
Gde skachat` mp3


2-1189170412
Arm79
2007-09-07 17:06
2007.10.07
ScreenToClient - отрицательные отрицательные значения Point.Y


2-1189420317
Nikola62
2007-09-10 14:31
2007.10.07
Как не дать форме открыться





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский