Главная страница
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.037 c
1-1138804054
alson
2006-02-01 17:27
2006.03.05
реализация АВЛ дерева на Delphi


2-1139640073
Интересующийся
2006-02-11 09:41
2006.03.05
Обработка сервером формы пришедшей от клиента


15-1139547961
QwertyKz
2006-02-10 08:06
2006.03.05
Коврик для мышки весом 1 кг


3-1136392871
Нютик
2006-01-04 19:41
2006.03.05
Как сложить строки с одинаковым кодом?


2-1139890063
Азат
2006-02-14 07:07
2006.03.05
функции в Делфи для работы с динам. памятью