Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zeichen beim errechnen nicht beachten (https://www.delphipraxis.net/104218-zeichen-beim-errechnen-nicht-beachten.html)

Striker00 29. Nov 2007 12:17


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 ?

DeddyH 29. Nov 2007 12:21

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:
const aStr = '^5Hallo';
begin
  ShowMessage(Copy(aStr,Pos('^',aStr) + 2,Length(aStr)));
end;
[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]

Striker00 29. Nov 2007 12:39

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

mkinzler 29. Nov 2007 12:43

Re: zeichen beim errechnen nicht beachten
 
StringReplace()

DeddyH 29. Nov 2007 12:45

Re: zeichen beim errechnen nicht beachten
 
StringReplace würde gehen, wenn es sich nur um das Zeichen handelt (ohne den Nachfolger).

DeddyH 29. Nov 2007 12:48

Re: zeichen beim errechnen nicht beachten
 
So sollte es gehen:
Delphi-Quellcode:
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;
[edit] Oder gleich als Funktion:
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);
const aStr = 'Aber ^5Hallo';
var s: string;
begin
  s := RestString(aStr,'^',1);
  ShowMessage(s);
end;
[/edit]

Striker00 29. Nov 2007 13:51

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...)

DeddyH 29. Nov 2007 14:06

Re: zeichen beim errechnen nicht beachten
 
Wie sieht der Aufruf denn aus?

Striker00 29. Nov 2007 14:08

Re: zeichen beim errechnen nicht beachten
 
was meinste mit aufruf ? Das was er mit der funktion machen soll ?

DeddyH 29. Nov 2007 14:12

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.
Seite 1 von 2  1 2      

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