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




Вниз

Копирование файла 


NS   (2002-03-27 04:43) [0]

Уважаемый All! Подскажите, пожалуста, почему код
var
f1,f2:file;
buf:array of byte;
begin
AssignFile(f1,"File1.ext");
AssignFile(f2,"File2.ext");
Reset(f1,1);
Rewrite(f2,1);
SetLength(buf,FileSize(f1));
BlockRead(f1,buf,FileSize(f1));
BlockWrite(f2,buf,FileSize(f1));
buf:=nil;
CloseFile(f1);
CloseFile(f2);
end;
Вызывает ошибку при исполнении на строке
CloseFile(f1);, но при этом файл все равно копируется?



Adder   (2002-03-27 05:32) [1]

var
buf:array of byte;
f1,f2:file;
begin
AssignFile(f1,"project1.ini");
AssignFile(f2,"project2.ini");
Reset(f1,1);
Rewrite(f2,1);
SetLength(buf,FileSize(f1));

BlockRead(f1, buf[0],FileSize(f1));
BlockWrite(f2, buf[0],FileSize(f1));

buf:=nil;
CloseFile(f1);
CloseFile(f2);
end;



Adder   (2002-03-27 06:13) [2]

Дело в том, что динамический массив размещается в памяти примерно так же, как длинная строка. А процедура BlockRead
читает из файла в память, начиная с ПЕРВОГО байта, занимаемого Buf (Это совсем не Buf[0]). И "затирает" информацию о размере динамического массива и счетчик ссылок.



NS   (2002-03-27 06:37) [3]

>Adder
Спасибо за помощ.




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




Наверх





Память: 0.72 MB
Время: 0.025 c
4-22891           Ewgenij               2002-02-05 20:22  2002.04.08  
System Tray


1-22646           IronHawk              2002-03-27 12:30  2002.04.08  
Как обыкновенную ToolBar-ину сделать вертикальной ? Все её свойства и её саму повернуть на 90° ???


3-22552           Revo                  2002-03-15 15:18  2002.04.08  
Как из данные из текстовика перенести в IB5.0


3-22538           Drik                  2002-03-11 23:43  2002.04.08  
Преобразование Date в Interbase


1-22661           LiNkS                 2002-03-27 21:59  2002.04.08  
Как переместить в Memo курсор на опр. место в опр. строке?