Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String Zeichen für Zeichen nach ANSI-Codes durchsuchen? Wie? (https://www.delphipraxis.net/7423-string-zeichen-fuer-zeichen-nach-ansi-codes-durchsuchen-wie.html)

Armageddon 11. Aug 2003 23:57


String Zeichen für Zeichen nach ANSI-Codes durchsuchen? Wie?
 
Hallo

Hab mal wieder ne kleine Bescheidene Frage.


Ich hab den Inhalt der Zwischenablage einem String zugewiesen. Und vorher auch schon getestet ob es nur Text ist. Soweit so gut.
Jetzt möchte ich aber diesen Text nach allen ANSI's durchsuchen außer
nach den Ziffern 0 bis 9. Falls ein anderes Zeichen außer den Ziffern enthalten ist, ist der Text ungültig und darf nicht in's Editfeld eingefügt werden.

Habe schon hier verzweifelt gesucht und auch in der Hilfe nachgesehen.
Aber ich seh den Wald vor lauter Bäumen mal wieder nicht. :freak:

Bis jetzt sieht es so aus:

Delphi-Quellcode:
procedure TForm1.Einfuegen1Click(Sender: TObject);
var
  Eingabe, Ausgabe, Zeichen: String;
begin
  begin
    if not 'bla bla bla Zwischenablage nix Text usw. das übliche' then
    Application.MessageBox('bla bla bla','bla bla',48)
    else
    Eingabe := Clipboard.AsText;

'Hier sollte nun vom ersten Zeichen an geprüft werden ob obiges zutrifft
wenn dann ein Zeichen gefunden wird das keine Ziffer ist soll ne Fehlermeldung kommen und gut'

'ansonsten gehts hier weiter'
Hoffe mir kann jemand helfen.

Gruß Arma.

chris 12. Aug 2003 00:50

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
hi,

quick & dirty könntest du es so machen:

Delphi-Quellcode:
try
  strtofloat(edit1.Text);
  showmessage('Zahl')
except
  showmessage('Keine Zahl')
end

Armageddon 12. Aug 2003 00:57

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Hi Chris,

danke für die Antwort. Ist mir schon klar die Quick and dirty methode.
Aber ich will es gern kompliziert und die volle Kontrolle über jedes Zeichen. Das mit der Quick and dirty hab ich schon versucht aber gefällt mir nicht. Bringt nicht den gewünschten Effekt.

Trotzdem danke.

Gruß Arma.

Luckie 12. Aug 2003 01:31

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Zitat:

Zitat von Armageddon
Jetzt möchte ich aber diesen Text nach allen ANSI's durchsuchen

Was sind bei die "ANSI"'s?

Armageddon 12. Aug 2003 01:37

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Oh Sorry Luckie,

jetzt hab ich mir vorher mal aus Neugier die "wie benehme ich mich hier richtig" Regeln durchgelesen wobei mir der Satz mit dem sachlich Formuliert oder wie es da heißt aufgefallen ist aber mach es dann nicht mal so. Kommt wohl von zu wenig Schlaf.

Mit ANIS's mein ich die Codes von #0 bis #255 wobei ja #48 bis #57 die zahlen sind aber sobald ich bei dem suchen ( ich hoffe das geht ) auf nen code ausserhalb der #48 bis #57 stoße kann ich den inhalt der zwischenablage vergessen.

hoffe ist jetzt verstädnlicher.

Gruß Arma.

Luckie 12. Aug 2003 01:39

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Könnte man dein Problem mit einfachen Worten so umschreiben, dass du nur die Ziffern aus dem String haben willst?

Luckie 12. Aug 2003 01:49

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Falls dem so ist. Hier die Lösung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: String;
begin
  s := 'sdfvsa7843vskljc023dskjv3746';
  i := length(s);
  while i > 0 do
  begin
    if not (s[i] in ['0'..'9']) then
      Delete(s, i, 1);
    dec(i);
  end;
  ShowMessage(s);
end;

Armageddon 12. Aug 2003 02:00

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Danke Luckie,

ist zwar nicht genau das was ich mir gedacht habe aber jetzt habe ich wenigstens mal nen anfang. ne kleine stütze sozusagen.

kann deinem beispiel etwas folgen werd mal sehen ob ich es so hinbasteln kann wie ich es mir vorstell.

Dankschäääää Arma.

Luckie 12. Aug 2003 02:07

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Was hast du dir den gedacht?

Nachtrag: So geht es übrigens auch:
Delphi-Quellcode:
if not (s[i] in [#48..#57]) then

Armageddon 12. Aug 2003 02:17

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
hmmm also eher so in der Art:

s := '13 gramm sind 10 zuviel'

wobei hier schon nach der 13 beim ersten leerzeichen also #32 angehalten werden sollte mit ner ShowMessage('das war wohl nix')

oder:

s := '-124.040,012'

wobei hier alles in ordnung wäre. weil nur zahlen und das minuszeichen drin sind. da will ich dann später die zahl mit dem tausendertrennzeichen wie es vom windowstaschenrechner kommt auf -124040,012 umwandeln aber wie das geht weiß ich schon das ist kein problem.

oder:

s := 'dieses Rezept ist nicht zum kochen gedacht'

hier müßte gleich beim ersten Zeichen also dem "d" dann die Fehlermeldung kommen.

hört sich wohl etwas kompliziert an aber was erklären war noch nie meine stärke. ich denke eher und handel in wenigen FLOPS *lol*

Gruß Arma.

Luckie 12. Aug 2003 02:23

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Nächster Versuch:
Delphi-Quellcode:
function IsNumberInString(const s: String): Boolean;
var
  i: Integer;
begin
  result := FALSE;
  i := length(s);
  while i > 0 do
  begin
    if (s[i] in [#48..#57]) then
    begin
      result := TRUE;
      exit;
    end;
    dec(i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: String;
begin
  s := 'sdfvsa7843vskljc023dskjv3746';
  s := 'abc';
  if IsNumberInString(s) then
    ShowMessage('Ziffer vorhanden.')
  else
    ShowMessage('War wohl nichts.');
end;

Luckie 12. Aug 2003 02:29

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Und noch einer:
Delphi-Quellcode:
function OnlyNumbersInString(const s: String): Boolean;
var
  i: Integer;
begin
  result := TRUE;
  i := length(s);
  while i > 0 do
  begin
    if not (s[i] in [#48..#57]) then
    begin
      result := FALSE;
    end;
    dec(i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: String;
begin
  s := 'sdfvsa7843vskljc023dskjv3746';
  s := 'a123';
  if OnlyNumbersInString(s) then
    ShowMessage('nur Ziffer')
  else
    ShowMessage('gemischt');
end;

Armageddon 12. Aug 2003 02:30

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Hui,

danke Luckie. Ich guck mir Dein Beispiel morgen also heute morgen mal an wenn ich ausgeschlafen habe. gehe jetzt ins bettchen *gähn*

augenfastzufallendengruß Arma.

Luckie 12. Aug 2003 02:33

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Warte eine habe ich noch.

Luckie 12. Aug 2003 02:36

Re: String Zeichen für Zeichen nach ANSI-Codes durchsuchen?
 
Jetzt habe ich es:
Delphi-Quellcode:
function IsValidFloat(const s: String): Boolean;
var
  i: Integer;
begin
  result := TRUE;
  i := length(s);
  while i > 0 do
  begin
    if not (s[i] in [#48..#57, #44, #45, #46]) then
    begin
      result := FALSE;
      exit;
    end;
    dec(i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  s: String;
begin
  s := '13 gramm sind 10 zuviel';
  //s := '-124.040,012';
  //s := 'dieses Rezept ist nicht zum kochen gedacht';
  if IsValidFloat(s) then
    ShowMessage('Zahl')
  else
    ShowMessage('gemischt');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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