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

Вниз

Потомок TFileStream   Найти похожие ветки 

 
Vendict ©   (2006-07-15 17:46) [0]

Такая ситуация. Есть задумка. Создаётся потомок от TFileStream и переписывается так, чтобы при чтении и записи на лету расшифровывалось и зашифровывалось соответственно. Тут и появляются странные грабли.


Type
 TBytes = array[0..MaxInt-1] of Byte;

 TCriptoFile = class (TFileStream)
.....
   Function Write(const Buffer; Count: Longint): Longint; override;
 End;

.......
Var
b:TBytes;

Function TCriptoFile.Write;
Var
a:array of Byte;
i:integer;
// b:TBytes;
Begin
FillChar(b,SizeOf(b),0);
SetLength(a,Count);
For i:=0 to count-1 do
 a[i]:=TBytes(Buffer)[i];

........// шифруем a по какому либо алгоритму

For i:=0 to count-1 do
 b[i]:=a[i];

Inherited Write(b, Count);
End;


и самое странное. при попытке
 Inherited Write(a, Count);
пишется чёрт знает что,
так же как написано выше, при вызове метода, например,
 Memo.Lines.SaveToStream(FS)
возникает ошибка, что-то вроде "Write Stream Error", но файл нормально записывается. как данные грабли обойти ?


 
Джо ©   (2006-07-15 18:05) [1]

Result := inherited Write(b[0], Count);

?


 
Ketmar ©   (2006-07-15 20:09) [2]

а почему бы не делать агрегирование? что-то вроде
constructor Create (aStream: TStream);
тогда можно любой поток кодировать.


 
Vendict ©   (2006-07-15 20:26) [3]

Джо ©   (15.07.06 18:05) [1]
Result := inherited Write(b[0], Count);


не ожидал такого решения. только без [0]. нужен был "Result" ...



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

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

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1155036326
Yeg
2006-08-08 15:25
2006.08.27
TreeView.Items.Count


15-1154510916
SPeller
2006-08-02 13:28
2006.08.27
Глюк IE. Помогите, кто чем может


6-1133493728
Component TIdNNTP
2005-12-02 06:22
2006.08.27
Indy Как избавиться от зависаний при закачке?


15-1154286778
Михель
2006-07-30 23:12
2006.08.27
Аська, точнее, QIP странно заглючил. Отпал с сообщением типа


9-1133498299
Fosgen
2005-12-02 07:38
2006.08.27
"Ошибка перечисления" из-за чего может возникать?