Вниз
Скачать: CL | DM;

запихнуть массив в TMemoryStream   Найти похожие ветки 

← →
Zorik ©   (2003-08-12 12:06) [0]

Здраствуйте!
У меня есть структура
type
TGraphPoint = record
X, Y: Real;
end;
TPointArray = array of TGraphPoint;
TGraphLine = record
Line: Integer;
Points: TPointArray;
end;
var<b/>
GraphLine: TGraphLine;

Так вот нужно этот GraphLine записать в TMemoryStream а потом оттуда прчитать в такую же структуру.

Пожалуйста с полным примером кода, а то я в этих байтах и поинтерах не очень силен
Спасибо


← →
Reindeer Moss Eater ©   (2003-08-12 12:14) [1]

Так ты начни писать. А когда дойдешь до байтов и пойнтеров, так и задай свой вопрос.


← →
Zorik ©   (2003-08-12 12:20) [2]

try
ms:=TMemoryStream.Create;
ms.Position:=0;
а дальше - не знаю, что-то типа ms.Read(Buffer,Count) ????
Вместо buffer писать GraphLine ...пробувал- не получается
...
...
finally
ms.Free;
end;


← →
Reindeer Moss Eater ©   (2003-08-12 12:24) [3]

А ты не заметил, что у тебя в TGraphLine есть поле Points типа динамического массива?
Не возникла мысль определить его текущую длину?
Размер, занимаемый массивом в памяти?
Цикл на худой конец по элементам организовать не думал?


← →
Zorik ©   (2003-08-12 12:40) [4]

Так вот дайте кокой-то пример а то я нигде не нашел, а я по єтому примеру для себя сделаю. Теоретически я понимаю, но никогда такого не делал, ведь есть много ньюансов, типа выделение памяти на сам масив плюс на заголовок и т. д. Я с этим, если не найду примера, месац мучится буду. Неужели так трудно, если знаеш, дать кусочек грамотного кода (я же не прошу всю процедуру написать). Плиз!!!


← →
icWasya ©   (2003-08-12 12:43) [5]


procedure WriteTPoint (ms:TStream; const P:TGraphPoint );
begin
ms.Write(P,SiseOf(P));
end;
procedure WriteTPointArray (ms:TStream; const Points:TPointArray );
Var I,L:Cardinal;
begin
L:=Length(Points);
ms.Write(L,ZiseOf(L));
for I:=0 to L-1 do begin
WriteTPoint (ms, Points[I]);
end;
end;
procedure WriteTGraphLine (ms:TStream; const G:TGraphLine );
begin
ms.Write(G.Line,SiseOf(G.Line));
WriteTPointArray (ms,Points);
end;

procedure ReadTPoint (ms:TStream; var P:TGraphPoint );
begin
ms.Read(P,SiseOf(P));
end;
procedure ReadTPointArray (ms:TStream; var Points:TPointArray );
Var I,L:Cardinal;
begin
ms.Read(L,ZiseOf(L));
SetLength(Points,L);
for I:=0 to L-1 do begin
ReadTPoint (ms, Points[I]);
end;
end;
procedure ReadTGraphLine (ms:TStream; var G:TGraphLine );
begin
ms.Read(G.Line,SiseOf(G.Line));
ReadTPointArray (ms,Points);
end;


← →
Zorik ©   (2003-08-12 12:46) [6]

Спасибо Всем!!!
Иду пробовать что получится


← →
Reindeer Moss Eater ©   (2003-08-12 13:23) [7]

Дали несчастному рыбку, а ведь мог научиться и удочкой пользоваться.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
1-81805
GameBoy
2003-08-12 20:55
2003.08.25
OleExcel.pas


1-81670
sewix
2003-08-11 18:57
2003.08.25
TRichEdit Scroll


1-81672
JS
2003-08-11 19:50
2003.08.25
ImageList и BitBtn


1-81629
Spawn
2003-08-14 09:38
2003.08.25
Word


1-81832
Vitalygavrilov
2003-08-13 10:50
2003.08.25
Возможно ли в QReport сделать заполнение бланка.




   Наверх