![]() |
zeichen beim errechnen nicht beachten
Hallo zusammen,
und zwar möchte ich für mein programm folgendes: Das Proggi soll aus der edit box (edit1.text) einmal alle zeichen übernehmen (diese dann in ne stringlist speichern , dass ist aber kein problem..) und dann soll er gleichzeitig noch den gleichen text nehmen nur das zeichen "^" weglassen und den nachfolgenden buchstaben auf "^" auch weglassen... Also kleines bsp: edit.text -> ^5Hallo dann soll er einmal "^5Hallo" übernehmen und einmal nur "Hallo" übernehmen. Ist das möglich ? Wenn ja , Wie ? |
Re: zeichen beim errechnen nicht beachten
Hallo, willkommen in der DP :dp:
Mit den Funktionen Copy und Pos sollte sich das machen lassen.
Delphi-Quellcode:
[edit] Das setzt voraus, dass sich das Zeichen an erster Stelle befindet, da sonst alle Zeichen davor unterschlagen werden. Das ist mit einem vorherigen Sichern (auch wieder mit Copy und Pos) zu umgehen. [/edit]
const aStr = '^5Hallo';
begin ShowMessage(Copy(aStr,Pos('^',aStr) + 2,Length(aStr))); end; |
Re: zeichen beim errechnen nicht beachten
naja das zeichen "^" sollte überall in der edit box rausgenommen werden (+ das nachfolgende zeichen..) nur am anfang von der box bringt es mir net allzuviel
|
Re: zeichen beim errechnen nicht beachten
StringReplace()
|
Re: zeichen beim errechnen nicht beachten
StringReplace würde gehen, wenn es sich nur um das Zeichen handelt (ohne den Nachfolger).
|
Re: zeichen beim errechnen nicht beachten
So sollte es gehen:
Delphi-Quellcode:
[edit] Oder gleich als Funktion:
const aStr = 'davor ^5Hallo';
var s: string; begin s := Copy(aStr,1,Pos('^',aStr) - 1); s := s + Copy(aStr,Pos('^',aStr) + 2,Length(aStr)); ShowMessage(s); end;
Delphi-Quellcode:
[/edit]
function RestString(const aStr: string;//Eingabestring
needle: char; //das gesuchte Zeichen CountTrailing: integer //Anzahl der zu löschenden Nachfolgezeichen ): string; begin Result := Copy(aStr,1,Pos(needle,aStr) - 1); Result := Result + Copy(aStr,Pos(needle,aStr) + Succ(CountTrailing),Length(aStr)); end; procedure TForm1.Button1Click(Sender: TObject); const aStr = 'Aber ^5Hallo'; var s: string; begin s := RestString(aStr,'^',1); ShowMessage(s); end; |
Re: zeichen beim errechnen nicht beachten
mhh erstma danke deddyh das würde funktionieren , aber er kommt nur damit klar wenn aStr = 'ein text'; ist wenn ich dort ne edit1.text angeb dann kommen fehlermeldungen:
[Fehler] Unit1.pas(30): Konstantenausdruck erwartet [Fehler] Unit1.pas(33): Inkompatible Typen (dieser kommt öfters...) |
Re: zeichen beim errechnen nicht beachten
Wie sieht der Aufruf denn aus?
|
Re: zeichen beim errechnen nicht beachten
was meinste mit aufruf ? Das was er mit der funktion machen soll ?
|
Re: zeichen beim errechnen nicht beachten
Also, ich habe das gerade mal getestet:
Delphi-Quellcode:
function RestString(const aStr: string;//Eingabestring
needle: char; //das gesuchte Zeichen CountTrailing: integer //Anzahl der zu löschenden Nachfolgezeichen ): string; begin Result := Copy(aStr,1,Pos(needle,aStr) - 1); Result := Result + Copy(aStr,Pos(needle,aStr) + Succ(CountTrailing),Length(aStr)); end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := RestString(Edit1.Text,'^',1); //im Edit steht 'Aber ^5Hallo' ShowMessage(s); end; |
Re: zeichen beim errechnen nicht beachten
ok das ist gut , dass funktioniert ;) Nur jetzt noch ne kleien sache ... wenn ich nur "hallo" (oder anderes...) in die edit box schreib ohne das zeichen ^ dann löscht er mir einfach den ersten buchstaben^^ Kann man das auch noch verhindern ?
|
Re: zeichen beim errechnen nicht beachten
vorher abfragen mit Pos(AStr, '^') > 0; oder Pos(Edit1.Text, '^') > 0; ?
|
Re: zeichen beim errechnen nicht beachten
Versuch es mal so:
Delphi-Quellcode:
function RestString(const aStr: string;//Eingabestring
needle: char; //das gesuchte Zeichen CountTrailing: integer //Anzahl der zu löschenden Nachfolgezeichen ): string; var iPos: integer; begin iPos := Pos(needle,aStr); if iPos = 0 then Result := aStr else begin Result := Copy(aStr,1,iPos - 1); Result := Result + Copy(aStr,iPos + Succ(CountTrailing),Length(aStr)); end; end; |
Re: zeichen beim errechnen nicht beachten
So ;) Ein gaaanz großes Danke an DeddyH !!!
Funktioniert jetzt alles so wie ich das will :) Ich liebe diese community :P |
Re: zeichen beim errechnen nicht beachten
Hatt sich geklärt war zu doof die function richtig einzusetzen -.-
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
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