Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Suche einen Fehlerfinder!

  Alt 29. Apr 2009, 16:43
Zitat von Superwinger:
Delphi-Quellcode:
function _SendData(vData, ReceiverTitle:string):boolean;
type
  TStringRecord=record
    var1:string;
  end;
Ja, wenn ich jetzt die Senderfunktion aufrufe und sage, er soll bitte "test" senden, wird nur "|)E" ausgegeben...
klar, weil du hier den Internen Pointer des Strings versendest ... drum auch das String[255]

und wenn dort immernoch ein Zeichen (also hier das Zeichen #4) vor dem "test" ankommt, dann nimm Array[1..255] of Char;

(oder probier es mal mit dem String "test56789012345678900123456789001234567890" ... denn vor dem String in String[255] versteckt sich noch ein Längenbyte und das wäre in dem letzen Fall "40 Zeichen", also #40 aka "(" )



[edit] OK, aber wo war die RedBox

ja, per Move bzw. MoveMemory/CopyMemory kopieren

MoveMemory(@CDString.var1, PChar(vData), Length(vData) + 1); aber paß auf, daß der Text in vData nicht länger als 255 Zeichen ist

oder einfach notfalls abschneiden
MoveMemory(@CDString.var1, PChar(vData), Min(Length(vData), 255) + 1); und die +1 sind für die abschließende Null


[add2]
oder versuch mal ganz einfach direkt und ohne den Record darum
pCDString := PChar(vData);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat