Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Strings bearbeiten (suchen/ersetzen) und in Pchar unwandeln? (https://www.delphipraxis.net/962-strings-bearbeiten-suchen-ersetzen-und-pchar-unwandeln.html)

Kruemel 2. Okt 2002 10:52


Strings bearbeiten (suchen/ersetzen) und in Pchar unwandeln?
 
Hi,

ich bin grad auf arbeit und ich muss einen aus anderen strings und integer bzw. float werten zusammengesetzten string nach einen komma abfragen diesen durch einen punkt ersetzen und dann in ein Pchar unwandeln damit ich diesen in eine Datei (TFileStream) schreiben kann. kann mir wer helfen ?

MfG

Krümel :coder: :shock:

sakura 2. Okt 2002 11:02

Eigentlich brauchst Du keinen PChar. Kurzes Beispiel
Code:
var
  FinalString: String;
begin
  ...
  FinalString := 'Erster Teil' + varZweiterTeil + IntToStr(DritterTeil) + 'Vierter Teil';
  FileStream.Write[@FinalString[1], Length(FinalString));
  ...
end;
Fertig.

Christian Seehase 2. Okt 2002 11:03

Moin Kruemel,

Code:
[color=#000080]// Nur um die Typen zu klären[/color]
[b]var[/b]
  iPos  : integer;
  sWork : [b]string[/b];
  fsWork : TFileStream;

[b]begin[/b]
  [color=#000080]// Komma gegen Punkt tauschen[/color]
  iPos := pos(',',sWork);
  [b]while[/b] iPos <> 0 [b]do[/b]
  [b]begin[/b]
    sWork[iPos] := '.';
    iPos := pos(',',sWork);
  [b]end[/b];
  [color=#000080]// und die Zeile wegschreiben[/color]
  fsWork.Write(sWork[1],Length(sWork));
[b]end[/b];
Wozu brauchst Du einen PChar?

[EDIT] @sakura: :mrgreen: [/EDIT]

Kruemel 2. Okt 2002 11:08

@chriss

sieht ganz gut aus, aber inder folgenden zeile :
sWork[iPos] := '.';
sagt der compiler mir das
'Left side cannot be assigned to'

das problem hatte ich beim EDH auch schon

PS: PChar wollte ich verwenden weil ich vorher WriteBuffe benutzt habe

Christian Seehase 2. Okt 2002 12:40

Moin Kruemel,

also die Meldung vom Compiler kann ich mir nicht erklären.
Dazu wäre mal ein ein wenig Sourcecode ganz hilfreich (u.a. mit den Deklarationen).
Bei mir funktioniert das so problemlos, egal ob ich sWork nun als array of char, pchar, Huge String oder Short String deklariere.

Bei WriteBuffer brauchst Du übrigens auch keinen PChar. Wenn der Buffer ein String ist, ist es nur wichtig, dass man die Position mit angibt, eben sWork[1] (z.B.). Wenn ich mich nicht sehr irre gilt das für alle Zugriffe, die einen untypisierten Buffer verwenden, nicht nur bei TFileStream.

Kruemel 2. Okt 2002 12:55

Habs hinbekommen. der fehler war

statt function convert( S :String):String;
hatte ich function convert(var S : String):String;

stehen. jetzt klappt es.

danke.
Mfg
krümel


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.

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