Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

Re: Record mit DCom übertragen

  Alt 30. Sep 2009, 20:15
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat