Delphi-PRAXiS

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;

Striker00 29. Nov 2007 14:26

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 ?

Progman 29. Nov 2007 14:32

Re: zeichen beim errechnen nicht beachten
 
vorher abfragen mit Pos(AStr, '^') > 0; oder Pos(Edit1.Text, '^') > 0; ?

DeddyH 29. Nov 2007 14:33

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;

Striker00 29. Nov 2007 15:11

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

Striker00 30. Nov 2007 19:07

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