Текущий архив: 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.46 MB
Время: 0.01 c