Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Case...of Schleifenproblem... 1...[Varbiable] (https://www.delphipraxis.net/111103-case-schleifenproblem-1-%5Bvarbiable%5D.html)

Mike_ 29. Mär 2008 16:29


Case...of Schleifenproblem... 1...[Varbiable]
 
Nun habe ich ein letztes Problem vor der "Vollendung" gefunden... es handelt sich um ein Programm wo ich die maximalen Eingabeversuche per Optionen festlegen lassen möchte...

Erstmal auch ein recht herzlichen Dank an die, die mir geholfen haben !

Das Problem ist ich habe es mit einer case a of Schleife gemacht... :

Delphi-Quellcode:
case a of
   0:
    begin
[...]
    end;
   1..maxver:                     // Hier soll er von der 1 Eingabe bis zur letzten (der der maximalen Versuche) gehen... 1..15 geht wunderbar, jedoch meckert er wenn ich 1..VARIABLE hintuh... "Constant expression expected"... Was kann man da tuhen ?

    begin
    if Edit2.Text=deutsch[x] then
                  begin
[...]
                  end
    else
                  begin
[...]
                  end
    end;
end;
end;

MrKnogge 29. Mär 2008 16:32

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Bei der verwendung von Case musst kannst du keine Variablen benutzen, da musst du dann eine if-Abfrage benutzen.

Mike_ 29. Mär 2008 16:48

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
So ich habs jetzt mal veruscht...

Also so sahs vorher aus, ging wunderbar, aber es kamen halt 100 Versuche (1..100) und ich wollte ja ein maximum einstellen...

Delphi-Quellcode:
case a of
   0:
    begin
[...]
    end;
   1..100:

    begin
    if Edit2.Text=deutsch[x] then
                  begin
[...]
                  end
    else
                  begin
[...]
                  end
    end;
end;
end;
So jetzt für die die das selbe Problem haben und das hier per SuFu gefunden haben, das wäre die richtige Lösung gewesen :

Delphi-Quellcode:
case a of
   0:
    begin
[...]
    end;
   1..100:

    begin
    if a < maxver then
    begin
                  if Edit2.Text=deutsch[x] then
                                begin
[...]
                                end
                  else
                                begin
[...]
                                end
                  end
    else
                  begin
                  ShowMessage('Maximale Versuche überschritten');
                  end
    end;
end;
end;
Ich glaub ich hab heute mein "Dankesagen Vorrat schon aufgebraucht... trotzdem ein DANKE !

MrKnogge 29. Mär 2008 16:52

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Ich glaube du hast nicht ganz verstande, was case macht.

Mit Case überprüfst du, welchen Wert a hat, ist der Wert 0, springt er bei 0 rein, liegt der Wert im Bereich von 1..100 springt er in diesen Bereich. Den Rest ignoriert er. Deine erste Version ist doch wunderbar, oder habe ich dich falsch verstanden? Falls ja, erklär mir bitte nochmal was du bezwecken möchtest.

Mike_ 29. Mär 2008 18:34

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Zitat:

Zitat von MrKnogge
Ich glaube du hast nicht ganz verstande, was case macht.

Mit Case überprüfst du, welchen Wert a hat, ist der Wert 0, springt er bei 0 rein, liegt der Wert im Bereich von 1..100 springt er in diesen Bereich. Den Rest ignoriert er. Deine erste Version ist doch wunderbar, oder habe ich dich falsch verstanden? Falls ja, erklär mir bitte nochmal was du bezwecken möchtest.

Also das Programm läuft so ab das man in den Optionen festlegen kann, wieviele Wörter er bekommmt um sein Vokabular zu "testen".

Nachdem ihm z.B. 15 Fragen gestellt wurden, sollte eine Auswertung kommen (dies mach ich aber erst noch später) wieviele Fehler derjenige hat usw..

Würde ich 1..100 machen würde er ja 100 Wörter gefragt werden... daher wollte ich mit der Caseschleife 1..maxver erreichen das er immernur in die Schleife reingeht, bis die maximale Anzahl an Übersetzungen erreicht sind.

:dp:

EDIT:// ich hab das 1..100 in richtigen Sourcecode in 1..1000000 umgeändert, sodass er immerwieder reinspringt... aber durch die if Bedingung sagt er dann wenn a kleiner ist als die maxver !

Fussball-Robby 29. Mär 2008 18:41

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Es gibt keine Case-Schleife :warn:
Case ist eine einmalige Abfrage, zu vergleichen mit If.
Delphi-Quellcode:
i := 7;              //i hat den Wert 7
Case i of            //  Alles bis 7 wird übersprungen
  1:ShowMessage('1'); //   |
  2:ShowMessage('2'); //   |
  3:ShowMessage('3'); //   |
  4:ShowMessage('4'); //   |
  5:ShowMessage('5'); //   |
  6:ShowMessage('6'); //   |
  7:ShowMessage('7'); //<--| Und dann wird alles bis zum end übersprungen
  8:ShowMessage('8'); //   |
  9:ShowMessage('9'); //   |
end; //<-------------------|
Hier wird genau EINMAL überprüft, welchen Wert i hat. Alle anderen Einträge werden einfach übersprungen.

Mfg

MrKnogge 29. Mär 2008 18:43

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Dann überprüfe a, vor der Case-Abfrage !
Und springe in die Case Schleife nur dann rein, wenn der Wert kleiner deines Max-Wertes liegt.

DeddyH 29. Mär 2008 18:46

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Ich verstehe die Logik nicht so ganz. Lass den User entscheiden, wie viele Fragen er haben will und merk Dir das in einer Variablen. In einer weiteren Variablen merkst Du Dir, wie viele Fragen bereits abgearbeitet wurden. Nun musst Du diese beiden doch nur noch vergleichen.

Mike_ 29. Mär 2008 19:17

Re: Case...of Schleifenproblem... 1...[Varbiable]
 
Zitat:

Zitat von MrKnogge
Dann überprüfe a, vor der Case-Abfrage !
Und springe in die Case Schleife nur dann rein, wenn der Wert kleiner deines Max-Wertes liegt.

Zitat:

Zitat von DeddyH
Ich verstehe die Logik nicht so ganz. Lass den User entscheiden, wie viele Fragen er haben will und merk Dir das in einer Variablen. In einer weiteren Variablen merkst Du Dir, wie viele Fragen bereits abgearbeitet wurden. Nun musst Du diese beiden doch nur noch vergleichen.

Ich freu mich ja über soviele Antworten, aber das Problem wurde doch schon gelöst (siehe Lösung oben), ich hab doch nurnoch auf eine Frage geantwortet wo jemand das Problem nicht verstanden hatte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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