Форум: "Основная";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизПотомок 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.043 c