![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ошибка в программе "Access violation at address..."
hawkins © (2006-01-27 17:27:00)Здрасвуйте, Мастера! У меня вопрос, точнее проблема:
в программе все время выползает ошибка "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 файлами...
Anatoly Podgoretsky (2006-01-28 16:03:00) [1]Хорошо не выбросит, но они никак не используются, абсолютно лишние.
begin...end (2006-01-28 15:46:00) [2]> Anatoly Podgoretsky © (28.01.06 15:39) [5]
> оптимизатор из выбросит
Ложь.
Anatoly Podgoretsky (2006-01-28 15:39:00) [3]setlength(f_name,size);
f_name:=PChar(ff.file_name); // если закоментировать эту //строку, то ошибки не будет.
Эти две строки совсем не нужны, оптимизатор из выбросит, а компилятор даст предупреждение
hawkins (2006-01-27 18:23:00) [4]Всем спасибо! Помог вариант от begin...end.
begin...end (2006-01-27 17:39:00) [5]> hawkins © (27.01.06 17:27)
> fs.ReadBuffer(ff.file_name,size);
fs.ReadBuffer(ff.file_name[0],size);
sniknik (2006-01-27 17:38:00) [6]
....
setlength(ff.file_name,size+1);
fs.ReadBuffer(ff.file_name,size);
ff.file_name[size+1]:= 0;
...
а так?
Игорь Шевченко (2006-01-27 17:30:00) [7]
> t_local_file_header=record
>
t_local_file_header=packed record
?