AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

string auf zahlen prüfen

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Okt 2003 · letzter Beitrag vom 28. Jun 2004
 
Benutzerbild von nTE
nTE

Registriert seit: 8. Sep 2003
60 Beiträge
 
#9

Re: string auf zahlen prüfen

  Alt 21. Okt 2003, 19:34
Ich möchte nochmal darauf hinweisen, dass das Abfangen der Tasteneingaben keineswegs die Lösung ist, per Kontext-Menü -> Einfügen geht es schließlich auch und das dann zu verbieten ist wohl eher eine Notlösung als anwenderfreundlich.

Meine Alternative wäre eine Funktion, die einen String auf "Zahlen" prüft und nur diese zurückliefert.
Delphi-Quellcode:
function StripDigits(sInput: String): String;
var
  i, dFirstPos: Integer;
  boolPrevWasDigit: Boolean;

begin
  // Variablen initialisieren
  Result := '';
  boolPrevWasDigit := false;
  dFirstPos := 1;

  // Schleife in der alle Zeichen von sInput nach 0..9 geprüft werden
  for i := 1 to Length(sInput) do
    begin
      // ist das i-te Zeichen aus 0..9?
      if sInput[i] in ['0'..'9'] then
        begin
          // war das vorherige Zeichen keine Zahl?
          if not boolPrevWasDigit then
            // es war keine Zahl, aber dieses Zeichen ist eine Zahl,
            // also setze Anfangsposition für erste gefundene Zahl nach
            // einem Nicht-Zahl-Zeichen
            dFirstPos := i;

          // setze "vorherige Zeichen war eine Zahl" auf wahr
          boolPrevWasDigit := true;
        end // if sInput[i] in ['0'..'9'] then
      else
        begin
          // war das vorherige Zeichen eine Zahl
          if boolPrevWasDigit then
            // es war eine Zahl, aber diese Zeichen ist keine Zahl,
            // also kopiere die Zeichen von "Anfangsposition für die
            // erste gefundene Zahl" (i - Anfangsposition) Anzahl Zeichen
            Result := Result + Copy(sInput, dFirstPos, i - dFirstPos);

          // setze "vorheriges Zeichen war eine Zahl" auf falsch
          boolPrevWasDigit := false;
        end; // else.. (if sInput[i] in ['0'..'9'] then)
    end;

  // da der Fall "vorheriges Zeichen war keine Zahl" am Ende der Zeichenkette
  // nicht auftritt, wenn das letzte Zeichen eine Zahl ist:
  // Prüfe ob das vorherige Zeichen eine Zahl war
  if boolPrevWasDigit then
    // wenn das vorherige (letzte) Zeichen eine Zahl war, dann kopiere die Zeichen von
    // "Anfangsposition für die erste gefundene Zahl" (i - Anfangsposition) Anzahl Zeichen
    Result := Result + Copy(sInput, dFirstPos, Length(sInput) + 1 - dFirstPos);
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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