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

Вниз

Использование интерфейсов в KOL   Найти похожие ветки 

 
Алексей Ефременко   (2005-10-12 11:49) [0]

Необходимо работать со структурированным файлом через интерфейсы IStorage и IStream. Однако, подключение к проекту модуля activex.pas наверняка потянет в KOL-проект "старые добрые" class-ы и весь тот балласт, от которого стремишся избавиться, переходя на KOL. Я верно рассуждаю? И есть ли выход из этого положения? Есть ли лазейка для использования interface в KOL?


 
shalex ©   (2005-10-12 11:53) [1]

activex.pas не относится к VCL, поэтому можно подключать.


 
ECM ©   (2005-10-12 11:57) [2]

Посмотрите в сторону http://bonanzas.rinet.ru/ActiveKOL.zip
может облегчить задачу


 
Thaddy   (2005-10-13 00:04) [3]

I have KOL pStream wrappers for IStream and IStorage if you want. Just mail me.


 
Thaddy   (2005-10-13 01:59) [4]


function OleStreamSeek(Strm: PStream; MoveTo: Integer; MoveMethod: TMoveMethod ): DWORD;
var
 Pos: Largeint;
begin
 ISTREAM(Strm.methods.fcustom).Seek(Moveto, integer(MoveMethod), Pos);
 Result := Longint(Pos);
end;

function OleStreamRead(Strm: PStream; var Buffer; Count: DWORD ): DWORD;
begin
 ISTREAM(Strm.methods.fCustom).Read(@Buffer, Count, @Result)
end;

function OleStreamWrite( Strm: PStream; var Buffer; Count: DWORD ): DWORD;
begin
 result:=ISTREAM(Strm.methods.fcustom).write(@Buffer, Count, @Result)
end;

function NewOleStream(const OleStream:iStream):pStream;
var
  Methods:TStreamMethods;
begin
Result:=_NewStream(Methods);
Result.Methods.fSeek:=OleStreamSeek;
Result.Methods.fRead:=OleStreamRead;
Result.Methods.fWrite:=OleStreamWrite;
Result.Methods.fCustom:=Pointer(OleStream);
end;

end.
constructor TOleStream.Create(const Stream: IStream);
begin
 FStream := Stream;
end;

function TOleStream.Read(var Buffer; Count: Longint): Longint;
begin
 OleCheck(FStream.Read(@Buffer, Count, @Result));
end;

function TOleStream.Seek(Offset: Longint; Origin: Word): Longint;
var
 Pos: Largeint;
begin
 OleCheck(FStream.Seek(Offset, Origin, Pos));
 Result := Longint(Pos);
end;

function TOleStream.Write(const Buffer; Count: Longint): Longint;
begin
 OleCheck(FStream.Write(@Buffer, Count, @Result));
end;

function TOleStream.GetIStream: IStream;
begin
 Result := FStream;
end;


 
Thaddy   (2005-10-13 14:28) [5]

http://members.chello.nl/t.koning8/kolcompdoc.pas

This contains a complete and full featured set of objects to work with storages and streams for KOL.

Please note that the included filesystem is broken, but the IStorage and Istream objects work, as do the utility routines (many ;) )



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
15-1149064855
0bsid
2006-05-31 12:40
2006.06.25
Delphi уроки $$


2-1149612650
qazwsx
2006-06-06 20:50
2006.06.25
Как получать параметры переданные через командную строку?


15-1149242870
Вопрошающий
2006-06-02 14:07
2006.06.25
Алгоритм определения дня недели по дате


1-1147986841
Германн
2006-05-19 01:14
2006.06.25
Установка Indy9 на Д6


2-1149199309
Tigraman
2006-06-02 02:01
2006.06.25
Работает ли пользователь за компьютером?