Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arbeiten mit PChar (https://www.delphipraxis.net/41239-arbeiten-mit-pchar.html)

Muetze1 28. Feb 2005 15:39

Re: Arbeiten mit PChar
 
Moin!

Die Funktion kann im Worst-Case Fall doppelt so lange Zeichenketten zurück geben, also:

Delphi-Quellcode:
procedure test(Const ASrcString: String);
var DestString: string;
begin
  SetLength(DestString, 2*Length(ASrcString));
  Translate(PChar(ASrcString), PChar(DestString), false);
  // Hier noch mit SetLength() den DestString auf die zurück gegebene Anzahl von zeichen kürzen...
end;
MfG
Muetze1

Pseudemys Nelsoni 28. Feb 2005 16:05

Re: Arbeiten mit PChar
 
was genau ist ein "Worst-Case Fall" ? ich meine wieso koennen doppelt soviele zeichen zurückgegeben werden ?

Gambit 28. Feb 2005 16:16

Re: Arbeiten mit PChar
 
Zitat:

Zitat von Khabarakh
Will Gambit es nicht einfach so :gruebel: ?
Delphi-Quellcode:
procedure test;
var srcString, DestString: string;
begin
  srcString:='a';
  DestString:='bb';
  Translate(PChar(srcString), PChar(DestString), false);
end;

Nene, so wollte ich es nicht, würde auch nicht funzen...

Ich würde viel jetzt viel lieber wissen, warum die Funktion nicht das tut was sie soll...

Luckie 28. Feb 2005 17:59

Re: Arbeiten mit PChar
 
Zitat:

Zitat von Gambit
Ich würde viel jetzt viel lieber wissen, warum die Funktion nicht das tut was sie soll...

Tja gute Frage. Aber ohne die Implementierung zu kennen, wird dir das wohl auch niemand sagen können. Aber: neue Frage, neuer Thread.

Oxmyx 28. Feb 2005 18:07

Re: Arbeiten mit PChar
 
Zitat:

Zitat von Binärbaum
Man sollte den Speicher reservieren, bevor man etwas in den PChar schreibt.

Nicht, wenn man ein Stringliteral schon zur Kompilierzeit zuweise. Dann nicht. In allen anderen Fällen schon.

Gambit 28. Feb 2005 18:28

Re: Arbeiten mit PChar
 
jepp und wenn ich anstelle von translate

Delphi-Quellcode:
OemToCharBuff(Pointer(S), Pointer(S), Length(S));
benutze, wo ich's mit der Speicherreservierung genauso handhaben muss, funzt es auch. Warum TDataSet.translate nicht funzt obwohl es genau das machen soll was OemToCharBuff macht, weiß ich auch nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz