Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: [Sharemem+DLL] String wird nicht korrekt erzeugt.

  Alt 14. Jan 2009, 14:43
GetMem reserviert nur Speicher

New reserviert und initialisiert den Speicher

ein dynamische Arrays und Strings müssen initialisiert werden, da die Speicherverwaltung dieser Strukturen sonst falsche Daten bekommt, as zu Fehlern führt.


wenn man weiß, wie initialisert werden muß, kann man es auch selber machen.
Delphi-Quellcode:
procedure TTestform.Button1Click(Sender: TObject);
Var testwert : string;
begin

  testwert := GetString; //String aus DLL!!!!!! über sharemem geholt
  //Testwert := #1#2#3#4#5#6; //<-- dieser code geht

  getmem(Buffer,Datasize + sizeof(TRecordInfo));
  Fillchar(Buffer^,Datasize + sizeof(TRecordInfo), #0);
  With PRecordInfo(Pointer(integer(Buffer) + Datasize))^ do
  begin
    GetMem(Bookmark , sizeof(TBookmarkInfo) );
    FillChar(Bookmark^, sizeof(TBookmarkInfo), 0);
    //New(PBookmarkinfo(Bookmark));

    PBookmarkInfo(bookmark)^.BookmarkStr := testwert;
  end;
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