![]() |
Delphi-Version: 5
Statische arrays
Hallo,
ich versuche mich schon seit einiger Zeit an dem Spiel Kniffel. Dabei bin ich fast fertig, nur eine Sache funktioniert nicht: Das Pragramm erkennt nicht, ob eine Aufgabe aus dem unteren Block erfüllt wurde. Nach einigem Ausprobieren habe ich festgestellt, dass das Problem nur bei Zahlen, welche noch sortiert werden müssen, auftritt. Mein Verdacht liegt dementsprechend nahe, dass der Sortieralghorhytmus (augfgrund der geringen Anforderung Bubblesort) fehlerhaft ist. Dabei ist mir unverständlich, weshalb ich an der entsprechenden Stelle (siehe Quellcode)kein Statisches array verwenden Kann ( Syntax error, "OF" expected but "[" found) Schon lange habe ich versucht das Problem zu beheben, bis jetzt habe ich jedoch noch keinen Erfolg. Nun bitte ich euch meinen Quellcode zu überprüfen: Test (hier für "kleine Straße"):
Delphi-Quellcode:
procedure TKniffel.BitBtn_ksClick(Sender: TObject);
var ks:boolean; p:integer; begin if schritt=2 then begin sort(Wuerfel); ks:=false; if Wuerfel[1]=Wuerfel[2]-1then if Wuerfel[1]=Wuerfel[4]-2 then if Wuerfel[1]=Wuerfel[5]-3 then ks:=true; if Wuerfel[2]=Wuerfel[3]-1 then if Wuerfel[2]=Wuerfel[4]-2 then if Wuerfel[2]=Wuerfel[5]-3 then ks:=true; if ks=true then p:=30 else p:=0; StringGrid1.Cells[Spieler,11]:=IntToStr(p); Bubblesort:
Delphi-Quellcode:
procedure sort(Eingabe:array {[1..5]} of Integer);
var n,j,hilfe:Integer; begin for n:=5 downto 1 do for j:=1 to n-1 do if Eingabe[j]>Eingabe[j+1] then begin hilfe:=Eingabe[j]; Eingabe[j]:=Eingabe[j+1]; Eingabe[j+1]:=hilfe; end; end; |
AW: Statische arrays
Hallo,
zumindestens den Syntax-Fehler können wir beheben type TEingabe = array [1..5] of Integer; und als Parameter dann TEingabe benutzen. Den BubbleSort verstehe ich nicht for n:=5 downto 1 do for j:=1 to n-1 do |
AW: Statische arrays
Vielen Dank für die schnelle Hilfe!
Zitat:
Würde es denn überhaupt die Funktionalität des Programmes beeinträchtigen, wenn ich ein dynamisches array benutze?-sonst müsste ich mich ja um diese Stelle nicht weiter kümmern Ich bin mir nun sicher, die Zahlen werden nicht sortiert, in einem gesondertem Programm funktioniert der Bubblesort jedoch...wahrscheinlich habe ich einen dummen Fehler bei der Übertragung der Variablen:? Ich werde wohl selbst noch etwas mit dem Programm beschäftigen und später bei Bedarf weitere Fragen stellen. Wäre nett,wenn ihr mir noch bei dem array helft. |
AW: Statische arrays
Dann probier doch einfach mal den
![]() |
AW: Statische arrays
Der Algorhytmus funktioniert.
Jetzt, wo ich den Sortieralgorhytmus nicht als gesonderte Prozedur habe, funktioniert Alles, wie es soll, sodass ich mich jetzt der Gestaltung widme.:coder:In dieser Hinsicht habe ich mich zum Thema Audio abspielen informiert,wobei wieder ein Fehler aufgetreten ist. Da sich das Programm kompilieren lässt, gehe ich von einem einfachen Syntaxfehler aus, welcher sich mir allerdings nicht erschließen lässt. Nun bitte ich um eure Hilfe:
Delphi-Quellcode:
Die mmsystemunit habe ich bereits hinzugefügt, wird die Audiodatei aufgerufen, hält das Programm an (snd_sync scheint zu funktionieren)-statt der gewünschten Datei ist jedoch nur ein Windowshinweiston zu hören.
sndPlaySound(PChar('Würfelbecher - shaker.wav'),SND_SYNC);
Tut mir leid, wenn ich vom ursprünglichen Thema abweiche. |
AW: Statische arrays
Siehe var in Parameterliste ;-)
Delphi-Quellcode:
...:cat:...
procedure sort(var Eingabe:array {[1..5]} of Integer);
var n,j,hilfe:Integer; begin for n:=5 downto 1 do for j:=1 to n-1 do if Eingabe[j]>Eingabe[j+1] then begin hilfe:=Eingabe[j]; Eingabe[j]:=Eingabe[j+1]; Eingabe[j+1]:=hilfe; end; end; |
AW: Statische arrays
Zitat:
...:cat:... |
AW: Statische arrays
Zitat:
|
AW: Statische arrays
Habe nun den Dateipfad in die Funktion reinkopiert und zusätzlich versucht, die Audiodatei unter C: zu speichern (und den entsprechenden Dateipfad anzugeben), funktioniert allerdings immer noch nicht.:(
Habt ihr vielleicht noch weitere Ideen? Könnte euch ein größerer Auschnitt aus dem Quellcode helfen? |
AW: Statische arrays
Zitat:
Delphi-Quellcode:
, ein
String
Delphi-Quellcode:
bzw.
string [n]
Delphi-Quellcode:
, ein
ShortString
Delphi-Quellcode:
, ein
PChar
Delphi-Quellcode:
oder ein
array of Char
Delphi-Quellcode:
sein.
array [low .. high] of Char
Außerdem kann es eine Variation dieser sein (
Delphi-Quellcode:
,
WideString
Delphi-Quellcode:
,
AnsiString
Delphi-Quellcode:
,
PAnsiChar
Delphi-Quellcode:
,
array of AnsiChar
Delphi-Quellcode:
dynamisch & statisch oder
array of WideChar
Delphi-Quellcode:
).
OpenString
Der Typ wird dann automatisch zur Kompilierzeit je nach Kontext der Verwendung zugewiesen. Das Casten von Konstanten kann verwendet werden, wenn du sicherstellen willst, dass eine bestimmte überladene Funktion aufgerufen wird. Ansonsten ergibt das aber wenig Sinn. Wenn die Funktion also einen PChar-Wert als Parameter erwartet, wird
Delphi-Quellcode:
also auch immer zu PChar in diesem Fall ausgewertet.
'Was auch immer'
Siehe hierzu: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz