Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

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

  Alt 14. Jan 2009, 15: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;
$2B or not $2B
  Mit Zitat antworten Zitat