Thema: Delphi String abschneiden #0

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

Re: String abschneiden #0

  Alt 23. Jun 2006, 18:37
Wieso nicht die Beste?

klar ist shmia's s := PChar(s); richtig, woallem da es sich augenscheinlich um einen PChar handelt,
allerdings wird dafür ein neuer String allociert, welcher mit den nötigen Daten aus dem PChar gefüllt wird, dann wird dieser neue String an s übergeben und der alte Inhalt wird freigegeben ... bei seinem wird unter Umständen ('s kommt drauf ann wieviel abgeschnitten wird und wie die Speicherverwaltung arbeitet) bis auf das Längenbyte überhaupt nichts verändert ... in dein meisten Fällen wird halt der String (bis #0) garnicht kopiert, da nur der nachvolgendene Speicherbereich vom MM zurückgenommen wird ... deines sollte also in einen Großteil der Fälle "besser" sein.


Aber mal andersrum ... wie bekommst du denn "MeinString" (zusammen mit dem anderen Zeugs in S rein ... vielleicht läßt es sich ja auch anders optimieren, nämlich indem S nurso groß reserviert wird, wie nötig.


[add]
und wie heißt die komische Windowsfunktion?


PS: oftmals geht auch sowas ... man holt sich erst die Länge und dann den Wert.

Delphi-Quellcode:
var s : string;
begin
  SetLength(s, windowsapifunction(nil));
  windowsapifunction(PChar(s));

// manchmal gibt es auch 'ne Extrafunktion für die Länge
var s : string;
begin
  SetLength(s, windowsapifunctionLen(nil));
  windowsapifunction(PChar(s));

[add]
Zitat:
zwar PAnsiChar als Parameter haben, wenn ich aber einen solchen übergebe kommt's ...
du darfst natürlich nicht einfach nur den PChar übergeben, der muß oftmals natürlich auch noch auf einen von dir reservierten Speicher Zeigen, wo dann die Daten reingeschirben werden sollen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat