AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Statische arrays

Ein Thema von IckyWolf · begonnen am 21. Feb 2019 · letzter Beitrag vom 2. Mär 2019
Antwort Antwort
IckyWolf

Registriert seit: 20. Dez 2018
10 Beiträge
 
#1

Statische arrays

  Alt 21. Feb 2019, 19:24
Delphi-Version: 5
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;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Statische arrays

  Alt 21. Feb 2019, 20:30
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
Heiko
  Mit Zitat antworten Zitat
IckyWolf

Registriert seit: 20. Dez 2018
10 Beiträge
 
#3

AW: Statische arrays

  Alt 21. Feb 2019, 21:42
Vielen Dank für die schnelle Hilfe!

Zitat:
type
TEingabe = array [1..5] of Integer;

und als Parameter dann TEingabe benutzen
klappt irgentwie nicht oder ich mach es noch nicht bganz richtig.

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.

Geändert von IckyWolf (21. Feb 2019 um 21:50 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#4

AW: Statische arrays

  Alt 22. Feb 2019, 15:19
Dann probier doch einfach mal den Algorithmus von hier.
  Mit Zitat antworten Zitat
IckyWolf

Registriert seit: 20. Dez 2018
10 Beiträge
 
#5

AW: Statische arrays

  Alt 27. Feb 2019, 10:22
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.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:
sndPlaySound(PChar('Würfelbecher - shaker.wav'),SND_SYNC); 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.

Tut mir leid, wenn ich vom ursprünglichen Thema abweiche.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Statische arrays

  Alt 27. Feb 2019, 10:31
Siehe var in Parameterliste

Delphi-Quellcode:
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;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Statische arrays

  Alt 27. Feb 2019, 10:33
Tut mir leid, wenn ich vom ursprünglichen Thema abweiche.
Neuer Thread, das hilft anderen, wenn diese nach ähnlichen Problemen suchen

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
669 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Statische arrays

  Alt 27. Feb 2019, 11:55
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.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:
sndPlaySound(PChar('Würfelbecher - shaker.wav'),SND_SYNC); 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.

Tut mir leid, wenn ich vom ursprünglichen Thema abweiche.
Verwende immer vollständige Pfadangaben für Dateien, nicht nur einen Dateinamen! Der Fehler in deinem Fall kommt einfach daher, dass die Funktion die Datei nicht finden kann, da sie nicht da liegt, wo es nachsieht (current directory).
Peter Below
  Mit Zitat antworten Zitat
IckyWolf

Registriert seit: 20. Dez 2018
10 Beiträge
 
#9

AW: Statische arrays

  Alt 2. Mär 2019, 19:13
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?
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
479 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Statische arrays

  Alt 2. Mär 2019, 21:22
PChar('Würfelbecher - shaker.wav')
Konstanten sind für gewöhnlich dynamisch zur Kompilierzeit typisiert, sie können also jeden beliebigen Typen haben. Ein Stringliteral kann entweder ein String , ein string [n] bzw. ShortString , ein PChar , ein array of Char oder ein array [low .. high] of Char sein.
Außerdem kann es eine Variation dieser sein (WideString , AnsiString , PAnsiChar , array of AnsiChar , array of WideChar dynamisch & statisch oder 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 'Was auch immer' also auch immer zu PChar in diesem Fall ausgewertet.

Siehe hierzu: Deklarierte Konstanten (Embarcadero DocWiki)
Dennis

Geändert von Dennis07 ( 2. Mär 2019 um 21:26 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz