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

Вниз

ошибка в программе "Access violation at address..."   Найти похожие ветки 

 
hawkins ©   (2006-01-27 17:27) [0]

Здрасвуйте, Мастера! У меня вопрос, точнее проблема:
в программе все время выползает ошибка "Access violation at address...".
Если закоментировать одну строку(в коде отмечена), то ошибка не появляется.
Помогите, пожалуста.
Код такой:



type
 t_local_file_header=record
    buffer1:array [1..26]
    file_name_length:array [1..2] of byte;  // размер для file_name
    extra_field_length:array [1..2] of byte;
    file_name:array of byte;
end;

procedure extract_filename(zipfn:string);

var
 ff:t_local_file_header;

implementation

procedure extract_filename(zipfn:string);
var
 fs:TFileStream;
 size:integer;    
 word1:^word;
 f_name:string;
begin
 fs := TFileStream.Create(zipfn,fmOpenRead) ;
 size:=30;
 fs.ReadBuffer(ff,size);
 word1:=@ff.file_name_length;
 size:=word1^;
 setlength(ff.file_name,size);
 fs.ReadBuffer(ff.file_name,size);
 setlength(f_name,size);
 f_name:=PChar(ff.file_name); // если закоментировать эту    //строку, то ошибки не будет.
end;



Вообще эта процедура для работы с zip файлами...


 
Игорь Шевченко ©   (2006-01-27 17:30) [1]


>  t_local_file_header=record
>    


t_local_file_header=packed record

?


 
sniknik ©   (2006-01-27 17:38) [2]


....
setlength(ff.file_name,size+1);
fs.ReadBuffer(ff.file_name,size);
ff.file_name[size+1]:= 0;
...


а так?


 
begin...end ©   (2006-01-27 17:39) [3]

> hawkins ©   (27.01.06 17:27)

> fs.ReadBuffer(ff.file_name,size);

fs.ReadBuffer(ff.file_name[0],size);


 
hawkins ©   (2006-01-27 18:23) [4]

Всем спасибо! Помог вариант от begin...end.


 
Anatoly Podgoretsky ©   (2006-01-28 15:39) [5]

setlength(f_name,size);
f_name:=PChar(ff.file_name); // если закоментировать эту    //строку, то ошибки не будет.

Эти две строки совсем не нужны, оптимизатор из выбросит, а компилятор даст предупреждение


 
begin...end ©   (2006-01-28 15:46) [6]

> Anatoly Podgoretsky ©   (28.01.06 15:39) [5]

> оптимизатор из выбросит

Ложь.


 
Anatoly Podgoretsky ©   (2006-01-28 16:03) [7]

Хорошо не выбросит, но они никак не используются, абсолютно лишние.



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

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1138730854
md
2006-01-31 21:07
2006.03.05
Canvas


2-1140424377
Officeman
2006-02-20 11:32
2006.03.05
сравнение


2-1139679073
Bogdan1024
2006-02-11 20:31
2006.03.05
как обратиться к пи_си-спикеру?


1-1138973753
DUDAS
2006-02-03 16:35
2006.03.05
выравнивание по вертикали в DBGrid


2-1140010647
ButtonExplorer
2006-02-15 16:37
2006.03.05
Правильно ли так проверять, создан ли компонент?