Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.023 c
1-81675
Manfred
2003-08-11 16:54
2003.08.25
Контейнер для хранения небольших данных.


4-82024
Adonis
2003-06-24 13:39
2003.08.25
Как получить список всех процессов, в том числе и системных (серв


1-81719
shurik
2003-08-11 01:09
2003.08.25
работа с каталагами


8-81844
Petro
2003-04-02 14:16
2003.08.25
Как из 1000 картинок найти похожую на образец?


11-81604
Brat-2
2002-12-15 21:22
2003.08.25
IdHTTP.Get на KOL