Autor |
Beitrag |
Xearox
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 12:02
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:
| procedure TForm1.Button1Click(Sender: TObject); var I,x:Integer;
begin test:=false; repeat for I:=1 to 10 do begin if ESchluessel.Text=Schluessel[I] then begin showmessage('Programm Erfolgreich Aktiviert'); Test:=True; end; end; until test=true;
if WrongKey=false then begin ShowMessage('Falscher Serial-Code, erneut eingeben oder mit eingeschränkter Funktionalität forfahren'); end;
end; |
So hier hab ich eine einfach for-do schleife, die ich mit hilfe einer Variablen I von 1 bis zu 10 laufen lassen möchte.
Gleichzeitig wird im programm geprüft, ob der eingetragene Schlüssel auch dem Schlüssel entspricht, der als Array festgelegt wurde...
Jedoch macht die for-do schleife nicht das, was sie soll, statt: 1,2,3,4,5,6,7,8,9,10 macht die 10,9,8,7,6,5,4,3,2,1...
und wenn ich I:=10 downto 1 mache macht die folgendes: -10,-9,-8,-7,-6,-5,-4,-3,-2,-1
Diese Werte bekomme ich im Debugger angezeigt...
Kann mir da jemand helfen?
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.01.10 12:09
Das ist vollkommen normal und eine Optimierung des Compilers. Die Schleife läuft aber korrekt was die verwendeten Werte im Quelltext angeht. Du siehst nur im Debugger die realen optimierten Werte, weil der die Optimierung nicht mitbekommt.
Zum Debuggen solltest du daher die Optimierung in den Compileroptionen ausschalten, musst nur eben daran denken diese wieder zu aktivieren, wenn du das Programm auslieferst. Denn je nach Programm kann dieses ohne Optimierung spürbar langsamer sein.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 24.01.10 12:11
Delphi-Quelltext 1:
| if ESchluessel.Text[I]=Schluessel[I] then |
müsste es nicht so heißen?
Dass der Debugger verbuggt ist, ist normal 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.01.10 12:13
Ach ja, dabei fällt mir auf: Xearox hat folgendes geschrieben : | Delphi-Quelltext |
Das wiederum wäre aber keine Folge der Optimierung, wenn da etwas schief geht, denn diese Zeile ist falsch, das kann böse ins Auge gehen und ist noch dazu vollkommen unlogisch.
Mehr dazu steht hier.
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 12:18
aber irgendwie ist das ganze ding schrott...macht nicht das, was er eig. machen soll...
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.01.10 12:22
In deinem Quelltext vergleichst du wie Xion schon geschrieben hat den gesamten Inhalt von ESchluessel mit deinem einzelnen Arrayeintrag. Bist du sicher, dass du das so meintest? Und nicht wie er geschrieben hat?
Zudem: Wenn test nie true wird, hast du eine Endlosschleife...
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 24.01.10 12:34
hi,
WrongKey wird ja auch nicht gesetzt, lediglich abgefragt.
Du erhälst zum schluss immer die Meldung (Falscher Code).
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 12:42
so, ich Esel hab natürlich, die Prozedure nicht mit dringehabt, welche dafür da ist, die Arrays zu festzulegen...dadurch wurde das EditFeld immer mit '' überprüft...
also mit nichts...
hab das mit Wrongkey eingefügt, und nun sieht es so aus...
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:
| procedure TForm1.Button1Click(Sender: TObject); var I,x:Integer;
begin I:=1; SchluesselFestlegen; Test:=false; WrongKey:=false; repeat for I:=1 to 10 do begin if ESchluessel.Text=Schluessel[I] then begin showmessage('Programm Erfolgreich Aktiviert'); Test:=true; WrongKey:=true; end; end; until test=true;
if WrongKey=false then begin ShowMessage('Falscher Serial-Code, erneut eingeben oder mit eingeschränkter Funktionalität forfahren'); end;
end; |
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 24.01.10 12:44
Wie schon zweimal gesagt, so wie du es hast funktioniert es nur, wenn in ESchluessel genau das drin ist wie in jedem Eintrag des Arrays... Xearox hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3:
| for I:=1 to 10 do begin if ESchluessel.Text=Schluessel[I] then | |
Und den Fehler mit den boolschen Werten hast du auch noch drin. Liest du eigentlich die Beiträge?
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 24.01.10 12:48
Du kannst Dein repeat weglasen und wrongkey in der For schleife setzen und zum Schluss abfragen!
Delphi-Quelltext 1: 2: 3: 4: 5:
| if WrongKey then showmessage('Programm Erfolgreich Aktiviert') else ShowMessage('Falscher Serial-Code, erneut eingeben oder mit eingeschränkter Funktionalität forfahren') end; |
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 13:17
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: So 24.01.10 13:21
Ich hab es dir auch geschrieben, schmeiss Deine Repaet raus und schon funct es  ;
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Xearox 
      
Beiträge: 260
Erhaltene Danke: 3
|
Verfasst: So 24.01.10 13:23
wieso zum Henker mach ich da ein Repeat rein...was hat mich da geritten, wenn es auch ohne geht 
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 24.01.10 14:05
Hier noch mal eine genaue Erläuterung, warum deine Schleife rückwärts läuft:
www.michael-puff.de/...ForRueckwaerts.shtml
|
|
|