Autor Beitrag
jana08
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 28.10.07 12:40 
Hallo.
Hab mal eine Frage. Ich muss bis Freitag im Info Unterricht ein Programm abgeben (LOGO für Arme, ist aber auch egal was für eins).
Ich komme nun nicht weiter.

Ich möchte überprüfen, ob eine Eingabe im Editfeld mit einer Zahl anfängt. Wie kann ich das machen??

Das soll also in etwa so aussehen:

ausblenden Delphi-Quelltext
1:
if (Buchstabe1 = 'Zahl'then					



Buchstabe1 ist deklariert und alles. Klappt auch. Nur 'Zahl' nicht.
Wie muss ich Zahl deklarieren? oder geht das noch anders? Oder ist es so ganz falsch?
Bitte helft mir...

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt und Titel der Frage angepasst. ;)


Zuletzt bearbeitet von jana08 am So 28.10.07 12:48, insgesamt 1-mal bearbeitet
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 28.10.07 12:58 
Delphi typisiert gerne und tut erweckt damit den eindruck, dass bestimmte Sachen unvereinbar wären obwohl im Computer alles Zahlen sind:

Zunächst im Edit oder so steht ein String auf einen einzelnen buchstaben greift man mit namestring[stelle] zu und hat dann einen charakter (char). Desweiteren ist ein Charakter auch nur eine Zahl, welche über eine Tabelle (Ascii) mit buchstaben assoziiert ist. du musst einfach nur den Zahlenwert des Buchstaben/Zeichens '1' herausfinden und das gleiche von '9' und überprüfen, ob der die Zahlrepräsentation des Charakter dazwischen liegt. das machst du mit < und > und an diesen Zahlenwert kommst du mit ord(meincharakter)
jana08 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 28.10.07 13:04 
Danke schonmal für die Antwort. Aber da ich mich mit Delphi nicht soo gut auskenne, versteh ich das nicht so ganz. Mit dem char das hab ich ja, um den ersten Buchstabe von der Eingabe rauszufinden. Also:

deklariert:
ausblenden Delphi-Quelltext
1:
2:
3:
var 
Buchstabe1: char;
Eingabe: string;


und das:
ausblenden Delphi-Quelltext
1:
2:
Eingabe:=EEingabe.text;
Buchstabe1:=Eingabe[1];


und jetzt möchte ich wissen, ob dieser Buchstabe1 eine Zahl oder ein Buchstabe ist..

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 28.10.07 13:10 
na ja du machst sowas wie if xxx<ord(meinchar)<yyy wobei du dir xxx und yyy aus der ascii tabelle suchen musst => googlen
jana08 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 28.10.07 13:14 
Danke. Das ist mir irgendwie zu kompliziert, ich glaub ich machs einfach doch auf die umständliche Art.. =/
Aber nochmal danke
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: So 28.10.07 13:18 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function IsInteger(value : String) Boolean;
begin
  Result:=true;
    try
      StrToInt(value)
    except
      Result:=false;
    end;
end;

if IsInteger(Edit1.Text[1]) then //...


EDIT: oder noch schöner:

ausblenden Delphi-Quelltext
1:
if Edit1.Text[1in ['0'..'9'then //...					
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: So 28.10.07 13:35 
Zugegeben deine letzte Variante ist nur eine Zeile und im Verhältnis zu meiner werden darin auch noch schön Schlüsselwörter gehighlightet. Da überprüfst du allerdings ein Set so wie ich den Delphi Compiler kenne, macht der da zehn Überprüfungen für jedes Element einzeln; das ist Verschwendung. Dabei sieht meine Variante noch nicht mal gehackt oder so aus. Selbst wenn er erkennt, dass ['0'..'9'] zusammenhängend ist, ist dies nur identisch zu meiner Variante. Deine erste ist auch wieder son Delphi schön-Stil. Ich frage mich nur wieso man einen Ausnahmezustand verhängen muss, um zu wissen ob das eine Zahl ist.
Manchmal ist es ganz gut, dass man mit Delphi nicht Treiber und so schreiben kann die wären einfach zu langsam.
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: So 28.10.07 14:01 
user profile iconAllesquarks hat folgendes geschrieben:
Manchmal ist es ganz gut, dass man mit Delphi nicht Treiber und so schreiben kann die wären einfach zu langsam.


für eine Schulaufgabe wird es wohl reichen :roll:
jana08 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 28.10.07 14:23 
Danke. Ja, für die Aufgabe reicht es!
Danke nochmal