Autor Beitrag
Xearox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: So 24.01.10 12:02 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: So 24.01.10 12:11 
ausblenden Delphi-Quelltext
1:
 if ESchluessel.Text[I]=Schluessel[I] then					


müsste es nicht so heißen?

Dass der Debugger verbuggt ist, ist normal :D

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.01.10 12:13 
Ach ja, dabei fällt mir auf:
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
  until test=true;					
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: So 24.01.10 12:18 
aber irgendwie ist das ganze ding schrott...macht nicht das, was er eig. machen soll...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 24.01.10 12:22 
In deinem Quelltext vergleichst du wie user profile iconXion 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? :gruebel:

Zudem: Wenn test nie true wird, hast du eine Endlosschleife...
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: 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...
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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...
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: So 24.01.10 12:48 
Du kannst Dein repeat weglasen und wrongkey in der For schleife setzen und zum Schluss abfragen!
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: So 24.01.10 13:17 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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...
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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?

ja klar, sonst würde ich ja nicht hier posten, oder?
und ich weiß auch, was du meinst...wenn im Edit Feld nicht der Key eingetragen wird, der Erwartet wird, kommt eine Endlosschleife zu stande, das problem hab ich ja...
Aber ich steige nicht dahin...wie ich nun das ohne dem machen kann...
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: So 24.01.10 13:21 
Ich hab es dir auch geschrieben, schmeiss Deine Repaet raus und schon funct es :wink: ;

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: 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



BeitragVerfasst: 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