Autor Beitrag
herman
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 07.04.05 14:35 
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
ausblenden 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 user profile iconTino: Überflüssige Absätze entfernt.
Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


Zuletzt bearbeitet von herman am Do 07.04.05 14:44, insgesamt 1-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 91

Win XP
D6 Pers
BeitragVerfasst: Do 07.04.05 15:00 
Hallo,

result wurde erst mit Delphi 1.0 eingeführt. Daher musst du den Namen der Funktion verwenden.

ausblenden Delphi-Quelltext
1:
IsInteger := False;					


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 user profile iconAXMD: Code- durch Delphi-Tags ersetzt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 91

Win XP
D6 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Fr 08.04.05 02:23 
Bitte Kommentare beachten : darin zerpflücke ich Deinen Quelltext ! :mrgreen:

ausblenden 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;           (* überflüssig *)
var x:integer;      (* überflüssig *)
 

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)

ausblenden 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 :

ausblenden 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 :

ausblenden 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:

_________________
Gruß
Hansa