![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 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