Форум: "Основная";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Вниз
Передача строки PChar в библиотеку Найти похожие ветки
← →
Dimaxx (2003-12-12 16:19) [0]Спецы! Не могу понять причину следующего:
Вот кусок кода библиотеки BZip2:
var IData,OData,ZData: TStream;
procedure CompressFile(IFile,OFile: PChar); stdcall;
begin
IData:=TFileStream.Create(IFile,fmOpenRead);
OData:=TFileStream.Create(OFile,fmCreate or fmOpenWrite);
ZData:=TBZCompressionStream.Create(BS9,OData);
ZData.CopyFrom(IData,IData.Size);
ZData.Free;
OData.Free;
IData.Free;
end;
procedure DecompressFile(IFile,OFile: PChar); stdcall;
var C: integer;
M: pointer;
begin
IData:=TFileStream.Create(IFile,fmOpenRead);
OData:=TFileStream.Create(OFile,fmCreate or fmOpenWrite);
ZData:=TBZDecompressionStream.Create(IData);
GetMem(M,65536);
while True do
begin
C:=ZData.Read(M^,65536);
if C<>0 then OData.WriteBuffer(M^,C) else Break;
end;
FreeMem(M,65536);
ZData.Free;
OData.Free;
IData.Free;
end;
exports
CompressFile,DecompressFile;
Вызов из программы:
procedure CompressFile(IFile,OFile: PChar); external "BZip2.dll" name "CompressFile";
procedure DecompressFile(IFile,OFile: PChar); external "BZip2.dll" name "DecompressFile";
begin
CompressFile("1.dat","1.dat.bz2");
DecompressFile("1.dat.bz2","2.dat");
end.
Получаем ошибку EFOpenError - "невозможно открыть файл" и вместо имени файла крякозябры! Кто перевирает имя файла! И как лучше его передать? Не работает даже такой код!
var S1,S2: string;
S1:="1.dat";
S2:="1.dat.bz2";
CompressFile(PChar(S1),PChar(S2));
S1:="1.dat.bz2";
S2:="2.dat";
DecompressFile(PChar(S1),PChar(S2));
Хотя если все это объединить в одно консольное приложение - первый вариант вызова работает на ура... Как у Чернышевского "Что делать?"
← →
panov (2003-12-12 16:32) [1]Сначала исправь вот это -
procedure CompressFile(IFile,OFile: PChar); external "BZip2.dll" name "CompressFile"; stdcall;
procedure DecompressFile(IFile,OFile: PChar); external "BZip2.dll" name "DecompressFile"; stdcall;
← →
Dimaxx (2003-12-12 22:51) [2]Во, млин, это ж надоть такую муть пропустить!!! Старею...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c