Also in diesem Fall müßtest die die Stringinhalte selber (einzeln) reinkopieren
oder alle einzeln übertragen, da von den String ja nur der interne Pointer im Array/Record liegen würde.
Ich weiß jetzt nicht in wie weit OleVariant und Variant kompatibel sind,
aber ich glaub dieses könnte gehn (da dein Array/Record nur aus Strings besteht)
es wäre dann ein Variant vom Typ varOleStr+varArray ... also ein OleString-/WideString-Array
String, AnsiString und UnicodeString sind ja nur delphi-eigene Erweiterungen und dürften in bei
DCOM/
OLE nicht gehn ... WideString ist nur eine Umleitung zum
OLE-String
Delphi-Quellcode:
type
TMesswert = record
Bezeichnung : WideString; // z.B. EMK A1-A2
Wert : WideString; // z.B. 185.4
Einheit : WideString; // z.B. V
Min_Wert : WideString; // z.B. 180.0
Max_Wert : WideString; // z.B. 190.0
end;
TMessreihe = record
Name : WideString; // z.B. Messwerte oder VDE-Messwerte
Messwert : array[0..100] of TMesswert;
end;
TMessTransfer = array[0..505] of WideString;
PMessTransfer = ^TMessTransfer;
procedure TForm2.Button3Click(Sender: TObject);
var
Messreihe : TMessreihe;
P : Pointer;
Temp : OleVariant;
X : Integer;
begin
for X := 0 to 50 do
begin
Messreihe.Messwert[X].Bezeichnung := SD_Grid.Cells[0,X + 1];
Messreihe.Messwert[X].Wert := SD_Grid.Cells[1,X + 1];
Messreihe.Messwert[X].Einheit := SD_Grid.Cells[2,X + 1];
Messreihe.Messwert[X].Min_Wert := SD_Grid.Cells[3,X + 1];
Messreihe.Messwert[X].Max_Wert := SD_Grid.Cells[4,X + 1];
end;
Temp := PMessTransfer(@Messreihe)^;
end;