Главная страница
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
3-86322
Bless
2003-12-03 11:13
2003.12.26
raiserror


7-86575
volser
2003-10-22 09:34
2003.12.26
Проблема с модемом


1-86453
AndrX
2003-12-13 12:39
2003.12.26
цвет шрифта в TrMemo


1-86385
leonidus
2003-12-07 23:49
2003.12.26
Компонент для отображения гистограммы скорости скачивания


3-86283
Chaked
2003-12-03 00:24
2003.12.26
Как посчитать количество записей, исключая при этом повторяющиеся