Autor |
Beitrag |
Caesar44
      
Beiträge: 44
|
Verfasst: Mo 01.06.09 21:24
Hallo liebe Delphiexperten, ich versuche gerade das 8Damenproblem zu lösen. Grundstruktur ist auf dem Blatt fertig, bloß mit der Syntax haperts leider:
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Feldticker; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Feldticker; var Feld: Array[1..64] of integer; i,Counter,p : Integer; begin for i:= 1 to 64 do begin Feld[i]:=0; end; i:=1; p:=1; while Feld[i]>0 do begin inc (i); end; if i <=8 then begin For p := 1 to 8 do begin Feld[p]:= 1; end; end; if (i >=9) and if (i <=18) then begin For p := 9 to 18 do begin Feld[p]:=1; end; end; Feld[i]:=2;
end;; Feld[i]:=2;
end;
procedure TForm1.Button1Click(Sender: TObject); begin Feldticker; end;
end. |
Es kommen dabei folgende Fehlermeldungen:
operator ist nicht auf operandentyp anwendbar
; erwartet, aber . gefunden
Weiß wirklich nicht woran es liegen könnte
Gruß Caesar
Zuletzt bearbeitet von Caesar44 am Mo 01.06.09 21:52, insgesamt 4-mal bearbeitet
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Mo 01.06.09 21:27
du solltest mal begin und end blöcke benutzen. ich kann dir sonst CHRISTIANS CRASHKURS nahelegen...
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Mo 01.06.09 21:37
Habs geändert, aber keine Besserung
Kann ich ein Array mit zwei verschiedenen Zählvariablen i und p durchlaufen?
Gruß
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 01.06.09 21:39
Du solltest dir die Grundlagen anschauen... Delphi-Quelltext 1:
| if i >=9 and if i <=18 then begin | Das muss so heißen: Delphi-Quelltext 1: 2:
| if (i >= 9) and (i <= 18) then begin | Und wenn deine Zeilennummern von den Fehlern nicht zum Quelltext passen, dann markiere die Fehlerzeilen am besten...
Ich meine, dieser Fehler war jetzt auf den ersten Blick zu sehen, aber sonst...
// EDIT:
Oder ganz einfach: Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if i <= 8 then for p := 1 to 8 do Feld[p] := 1 else if i <= 18 then for p := 9 to 18 do Feld[p] := 1; |
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Mo 01.06.09 21:44
Ok geändert.
EDIT:
Oh ich hatte noch ein If zuviel, deswegen hat es nicht funktioniert.
Vielen Dank
--- Moderiert von Narses: Beiträge zusammengefasst---
Ich habe jetzt mein Programm soweit fertig geschrieben.
Leider kommt jetzt, wenn ich versuche das Programm zu starten Interner Fehler T 2541 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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; edt1_ausgabe: TEdit; procedure Feldticker; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; i : Integer; Feld : array[1..64] of integer;
implementation
{$R *.DFM}
procedure TForm1.Feldticker; var Counter,p : Integer; begin Counter := 0; For i := 1 to 64 do begin If Feld[i]=2 then begin inc (Counter); edt1_ausgabe.text:=edt1_ausgabe.text+'feld'+InttoStr(i); end; end; If Counter = 8 then begin break; end; i:=1; For i:= 1 to 64 do begin if Feld[i] = 0 then begin if (i <=8) then begin For p := 1 to 8 do begin Feld[p]:= 1; end; end; if (i>=9) and (i<=16)then begin For p := 9 to 16 do begin Feld[p]:=1; end; end; if (i>=17) and (i<=24)then begin For p := 17 to 24 do begin Feld[p]:=1; end; end; if (i>=25) and (i<=30)then begin For p := 25 to 32 do begin Feld[p]:=1; end; end;
if (i>=31) and (i<=36)then begin For p := 33 to 40 do begin Feld[p]:=1; end; end; if (i>=41) and (i<=48)then begin For p := 41 to 48 do begin Feld[p]:=1; end; end; if (i>=49) and (i<=56)then begin For p := 49 to 56 do begin Feld[p]:=1; end; end; if (i>=57) and (i<=64)then begin For p := 57 to 64 do begin Feld[p]:=1; end; end; Feld[i]:=2; If (i<>8) and (i<>16) and (i<>24) and (i<>32) and (i<>40) and (i<>48) and (i<>56) and (i<>64) then begin For p := 1 to 10 do begin If i+p*9 > 64 then break; Feld[i+p*9]:=1; end; end; If (i<>8) and (i<>16) and (i<>24) and (i<>32) and (i<>40) and (i<>48) and (i<>56) and (i<>64) then begin For p := 1 to 10 do begin If i-p*7 < 0 then break; Feld[i-p*7]:=1; end; end; If (i<>1) and (i<>9) and (i<>17) and (i<>25) and (i<>33) and (i<>41) and (i<>49) and (i<>57) then begin For p := 1 to 10 do begin If i+p*7 > 64 then break; Feld[i+p*7]:=1; end; end; If (i<>1) and (i<>9) and (i<>17) and (i<>25) and (i<>33) and (i<>41) and (i<>49) and (i<>57) then begin For p := 1 to 10 do begin If i-p*9 < 0 then break; Feld[i-p*9]:=1; end; end; end; end; Feldticker; end; <span style="color: red"></span>Interner Fehler T2541
procedure TForm1.Button1Click(Sender: TObject); begin for i:= 1 to 64 do begin Feld[i]:=0; end; Feldticker; end; |
Entschuldigung für die drei Ends vor feldticker die alle gleich übereinander stehen. Ich hatte leider noch zuletzt zwei begin-end Blöcke hinzugesetzt, hab keine Ahnung wie ich den gesamten Quelltext nach vorn verschieben kann, einzeln war mir es zuviel jede Zeile vier nach vorne zu verschieben.
Gruß Caesar
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 01.06.09 23:41
|
|
Caesar44 
      
Beiträge: 44
|
Verfasst: Mo 01.06.09 23:57
Stimmt ne Abbruchbedingung wäre wohl net schlecht. Oh wie peinlich *erröt*
Dankeschön für die Hilfe!
|
|
|