Главная страница
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.011 c
14-86554
Nelud
2003-11-28 18:07
2003.12.26
Можно ли/нужно ли помочь человеку который сам себе помочь


3-86290
rel_
2003-11-24 16:11
2003.12.26
DBGrid


6-86476
Dosia
2003-10-29 22:52
2003.12.26
Как сделать сделать, чтобы каждый браузер работал со своим IP?


6-86483
arche
2003-10-27 09:25
2003.12.26
Как подгружать картинки в страницу, которую генерит TСPServer?


6-86477
bers
2003-10-28 10:13
2003.12.26
Запуск программ