Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Gültige Eingabezahlen von Delphi --> Pascal
herman - Do 07.04.05 14:35
Titel: Gültige Eingabezahlen von Delphi --> Pascal
Hallo ich brauche hilfe bei einer umsetzung eines delphi in pascal programms. die sprachen sind sich ja recht ähnlich habe ich gesehen. trotzdem gelingt es mir nicht den folgenden code in pascal zu schreiben. da ich gewisse befehle nicht kenne
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| program integerzahl; uses crt; var x:integer;
function isinteger(s:string):boolean; var q:integer; c:char;
begin q:=1; while length(s) > 0 do begin c:=s[1]; case q of 1 : if c in ['+','-'] then q:= 2 else if c in ['0'..'9'] then q := 3 else q := 99; 2 : if c in ['0'..'9'] then q := 3 else q := 99; 3 : if c in ['0'..'9'] then q := 3 else q := 99; end;
delete(s,1,1); end; result := (q = 3); end; |
Bitte um hilfe danke
mfg
Moderiert von
Tino: Überflüssige Absätze entfernt.
Moderiert von
Tino: Delphi-Tags hinzugefügt.
jaenicke - Do 07.04.05 14:40
:welcome:
Wo liegt denn dabei genau das Problem, d.h. welche Befehle fehlen dir denn?
Und Delphi-Quelltext bitte in [delphi]...[/delphi] Tags setzen (geht auch mit dem Knopf Delphi oben), damits einfacher zu lesen ist...
herman - Do 07.04.05 14:43
danke für hinweis
die befehle result und delete sind mir unbekannt
und eigentlich wollt ich noch wissen was ich am rest noch ändern muss damit der code auch in pascal die gewünschten ergebnisse liefert
mfg
HolgerB - Do 07.04.05 15:00
Hallo,
result wurde erst mit Delphi 1.0 eingeführt. Daher musst du den Namen der Funktion verwenden.
Den Namen der Funktion darfst du in Pascal glaube ich erst am ende der Funktion verwenden um eine Rekursion (selbstaufruf) zu vermeiden. GGf. musst Du das Ergebnis in einer Variable zwischenspeichern.
Delete muss ich auch erst nachschauen.
Gruß
Holger
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt.
jaenicke - Do 07.04.05 15:38
Delete löscht aus dem übergebenen String von der als zweites übergebenen Position die als drittes übergebene Anzahl an Zeichen, in diesem Fall also das erste Zeichen, das ja gerade analysiert worden ist...
HolgerB - Do 07.04.05 15:55
Ich fürchte Delete musst du selber bauen.
Mit Left und Right kannst Du einen String abschneiden und mit + wieder zusammen bauen.
Oder hießen sie Leftstring und Rightstring? Egal, steht in der Hilfe.
Gruß
Holger
jaenicke - Do 07.04.05 16:02
Ähh, welche Pascal-Version ist das eigentlich? In meinem TP für Windows ist Delete dabei, bei TP 7 hab ich nicht nachgesehen.
delfiphan - Fr 08.04.05 01:54
Was ist denn das für n Chaoscode? Sowas programmiert man viel einfacher mit einer For-Schleife und ohne Delete. Oder noch einfacher machst du ein Val und rufst den Errorcode ab. Ob Val ein explizit geschriebenes, positives Vorzeichen verträgt, weiss ich jedoch nicht.
hansa - Fr 08.04.05 02:23
Titel: Re: Gültige Eingabezahlen von Delphi --> Pascal
Bitte Kommentare beachten : darin zerpflücke ich Deinen Quelltext ! :mrgreen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| program integerzahl; uses crt; var x:integer;
function isinteger(s:string):boolean; var q:integer; c:char;
begin q:=1; while length(s) > 0 do begin c:=s[1]; case q of 1 : if c in ['+','-'] then q:= 2 else if c in ['0'..'9'] then q := 3 else q := 99; 2 : if c in ['0'..'9'] then q := 3 else q := 99; 3 : if c in ['0'..'9'] then q := 3 else q := 99; end;
delete(s,1,1); end; result := (q = 3); end; |
Ne, war doch nicht so schlimm. Wahrscheinlich nur altlasten. 8)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| function isinteger(s:string):boolean; var q:integer; c:char; begin q:=1; while length(s) > 0 do begin c:=s[1]; case q of 1 : if c in ['+','-'] then q:= 2 else if c in ['0'..'9'] then q := 3 else q := 99; 2 : if c in ['0'..'9'] then q := 3 else q := 99; 3 : if c in ['0'..'9'] then q := 3 else q := 99; end; delete(s,1,1); end; result := (q = 3); end; |
Ich habe den Source etwas abgeändert. Eine Zeile zu verschwenden für einzelnes begin, das ist zwar Borland Style Guide konform, aber nicht bei mir. :mrgreen: Und siehe einer mal an : es ist zeilenmäßig mehr geworden aber die Zeilen sind auch kürzer und man sieht etwas entscheidendes. :shock: q ist immer 1. Insofern ist das nichts anderes als das hier :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function isinteger(s:string):boolean; var q:integer; c:char; begin q:=1; while length(s) > 0 do begin c:=s[1]; case q of 1 : if c in ['+','-'] then q:= 2 else if c in ['0'..'9'] then q := 3 else q := 99; end; delete(s,1,1); end; result := (q = 3); end; |
Dann geht es weiter : q bleibt immer noch 1 :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function isinteger(s:string):boolean; var q:integer; c:char; begin q:=1; while length(s) > 0 do begin c:=s[1]; if c in ['+','-'] then q:= 2 else if c in ['0'..'9'] then q := 3 else q := 99; delete(s,1,1); end; result := (q = 3); end; |
Und jetzt sehe ich noch, daß es bereits zu spät ist. 8) Letzte Kurzanalyse : q rausschmeißen !! Bool-Variable verwenden und diese als Resultat IsInteger zuweisen.
[Edit] Stimmt so auch nicht, aber ich lasse das mal trotzdem hier so stehen. Es ist doch Chaoscode. Als Sphagetti-Code kann man es allerdings kaum bezeichnen, ich würde sagen es sind Rigatoni mit zu viel Käse. :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!