AGB  ·  Datenschutz  ·  Impressum  







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

String auf Buchstaben testen

Ein Thema von TomDooley · begonnen am 3. Aug 2006 · letzter Beitrag vom 5. Aug 2006
Antwort Antwort
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#1

String auf Buchstaben testen

  Alt 3. Aug 2006, 14:46
Gibt es eine fertige Funktion in Delphi mit der man einen String auf Buchstaben überprüfen kann?

Ich hab's bislang so gelöst:
Delphi-Quellcode:
function CheckLetter(Text : String) : boolean;
var
  i : integer;
begin
  Result := false;
  for i:=1 to Length(Text) do
  begin
    if Text[i] in [chr($41)..chr($5A),chr($61)..chr($7A)] then
    begin
      Result := true;
      break;
    end;
  end;
end;
Gibt es eine effizienere Methode?

Danke
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: String auf Buchstaben testen

  Alt 3. Aug 2006, 15:00
hier wird ein ähnliches problem behandelt
http://www.delphipraxis.net/internal...ct.php?t=89155
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: String auf Buchstaben testen

  Alt 3. Aug 2006, 17:50
Hang down your head Tom Dooley,

hast du deinen Code schon mal ausprobiert? Sobald das erste alphabetische Zeichen gefunden wird, meldet deine Funktion Erfolg. Du musst deine Logik anpassen. Hier noch eine Alternative, die von deinem Problem etwas abstahiert und dadurch andere Verwendungen ermöglicht:

Delphi-Quellcode:
const
  LCASE = 'abcdefghijklmnopqrstuvwxyzäöü';
  UCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ';
  ALPHA = LCASE + UCASE + 'ß';

function ContainsOnly(const s, chars: String): Boolean;
var
  i : integer;
begin
  i := 0;
  Result := s <> ''; // eine Frage der Definition ...
  while Result and (i < Length(s)) do
  begin
    Inc(i);
    Result := Pos(s[i], chars) > 0;
  end;
end;

procedure TDemoForm.DemoButtonClick(Sender: TObject);
var
  s: String;
begin
  s := '';
  while InputQuery('Alpha-Test', 'String', s) do
    ShowMessage(IfThen(ContainsOnly(s, ALPHA), 'is alphabetic', 'is NOT alphabetic'));
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: String auf Buchstaben testen

  Alt 3. Aug 2006, 17:59
[Unsinn entfernt]
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
TomDooley

Registriert seit: 26. Jan 2004
124 Beiträge
 
#5

Re: String auf Buchstaben testen

  Alt 4. Aug 2006, 07:48
Zitat:
Sobald das erste alphabetische Zeichen gefunden wird, meldet deine Funktion Erfolg.
Ich weiss und das soll es auch

Ich habe jetzt auch verstanden dass der Titel falsch interpretiert werden kann. Die Aufgabe ist nämlich, dass der String KEINEN Buchstaben enthalten darf. (Hintergrund: ich bin an einem kleinen Übersetzungsprogramm. Nur Zahlen und Sonderzeichen müssen nicht übersetzt werden, jedoch wird Schalter123 zu Button123...)

Danke trotzdem. Dein Code kann ja dennoch verwenden.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: String auf Buchstaben testen

  Alt 5. Aug 2006, 17:10
Hallo Leute,

AmateurProfi hat mir gegenüber in einer PN den Verdacht geäußert, dass eine Umstellung des Tests von string search auf set membership deutliche Laufzeitverbesserungen mit sich bringen könnte. Und Recht hat er damit. Der Compiler erzeugt so wesentlich effektiveren Code.

Hier seine Funktion:

Delphi-Quellcode:
type
   TCharSet = Set of Char;

const
  LCASE = ['a'..'z', 'ä', 'ö', 'ü'];
  UCASE = ['A'..'Z', 'A', 'Ö', 'Ü'];
  ALPHA = LCASE + UCASE + ['ß'];

function ContainsOnly(const s: String; chars: TCharSet): Boolean;
var
  i: Integer;
begin
  i := Length(s);
  Result := s <> ''; // eine Frage der Definition ...
  while Result and (i > 0) do
  begin
    Result := s[i] in chars;
    Dec(i);
  end;
end;
Teuflisch schnell auch ohne Assembler - danke Klaus.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz