Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.26;
Скачать: CL | DM;

Вниз

Передача строки 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
6-86481
alt7
2003-10-28 17:58
2003.12.26
Про потоки в СЕРВЕРЕ


14-86549
R
2003-12-02 04:16
2003.12.26
Delphi 5 Standart


14-86529
Чувак
2003-11-30 23:15
2003.12.26
Nokia N-Gage


9-86241
MeF88
2003-05-31 08:05
2003.12.26
Вечный вопрос: мировые и оконные координаты OpenGl


11-86326
dataMaster
2003-04-14 16:36
2003.12.26
DecimalSeparator