AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kann fehler nicht finden, Programm hängt sich auf
Thema durchsuchen
Ansicht
Themen-Optionen

Kann fehler nicht finden, Programm hängt sich auf

Ein Thema von Mariaki · begonnen am 28. Okt 2008 · letzter Beitrag vom 29. Okt 2008
Antwort Antwort
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Kann fehler nicht finden, Programm hängt sich auf

  Alt 28. Okt 2008, 16:15
Hi,
ich habe ein Programm geschrieben, in dem eine 8 Stellige Reihenfolge von Buchstaben, Zahlen und Zeichen in einem Edit-Feld erstellt wird. Wenn man auf Erstellen klickt passiert dies, der Button wird Deaktiviert und die Buttons Löschen und Kopieren aktiviert.
Ich habe das Startfenster und das Fenster nachdem Erstellen geklickt wurde unten angefügt.

Wenn man nun Löschen drückt sollte:
1.Button Erstellen aktivieren,
2.Die Buttons Löschen und Kopieren deaktivieren und
3.Es ermöglichen einen Neuen 8.Stelligen-Code zu erstellen!

Bis 2. Klappt das auch, aber wenn ich dann auf Erstellen klicke hängt sich da Programm auf. Ich vermute, dass da ein Fehler in der Repeat-Schleife ist, kann aber Irgendwie den Fehler nicht finden.

Hier der Quelltext:
Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    EdPasswort: TEdit;
    BtnErstellen: TButton;
    BtnLoeschen: TButton;
    BtnKopieren: TButton;
    procedure BtnErstellenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnKopierenClick(Sender: TObject);
    procedure BtnLoeschenClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

var
 KennZ,GroßKlein,Repeat1:Integer;
 Z1:String;
 Repeat2:Boolean;

procedure TForm3.BtnErstellenClick(Sender: TObject);
begin
Repeat
 Repeat1:=Repeat1+1;
 Randomize;
 KennZ:=random(59);
 GroßKlein:=random(2);
 case KennZ of
  1:
   begin
   IF GroßKlein=1 THEN
    Z1:='a'
   ELSE
    Z1:='A';
   end;
  2:
   begin
   IF GroßKlein=1 THEN
    Z1:='b'
   ELSE
    Z1:='B';
   end;
  3:
  //... Hier sind die ganzen Bedeutungen Für die Buchstaben,Zahlen und Zeichen
  59:
   begin
   Z1:='°';
   end;
 end;
 EdPasswort.text:=EdPasswort.text + Z1;
 IF Repeat1=8 THEN
 begin
 Repeat2:=True
 end;
Until Repeat2;
BtnErstellen.Enabled:=False;
BtnKopieren.Enabled:=True;
BtnLoeschen.Enabled:=True;
end;

procedure TForm3.BtnLoeschenClick(Sender: TObject);
begin
Repeat2:=False;
EdPasswort.Clear;
BtnErstellen.Enabled:=True;
BtnKopieren.Enabled:=False;
BtnLoeschen.Enabled:=False;

end;

procedure TForm3.BtnKopierenClick(Sender: TObject);
begin
EdPasswort.CopyToClipboard;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Repeat2:=False;
BtnKopieren.Enabled:=False;
BtnLoeschen.Enabled:=False;
EdPasswort.Clear;
EdPasswort.ReadOnly:=True;
end;

end.
Danke schon mal im Voraus!
Angehängte Grafiken
Dateityp: bmp bild_2_143.bmp (69,1 KB, 5x aufgerufen)
Dateityp: bmp bild_1_156.bmp (69,1 KB, 2x aufgerufen)
Benedikt
Warum merken die ganzen Christen eigentlich nicht, dass Gott veraltet ist. Zur Zeit von Jesus war er ein gutes Medium um Moral zu verbreiten.. aber Heute?!?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Kann fehler nicht finden, Programm hängt sich auf

  Alt 28. Okt 2008, 16:23
Du solltest ganz am Anfang von BtnErstellenKlick zwischen begin und repeat folgendes einfügen:
Delphi-Quellcode:
begin
Repeat2:=False;
Repeat1 = 0;
repeat
Damit die Schleife terminiert

(Ja, auch das repeatt2=false sollte da stehen, und nicht da unten beim löschenklick )

Btw.:. Dein Code ist nicht besonders gut formatiert geschweige denn sauber, aber das ist ne andere Sache
  Mit Zitat antworten Zitat
Benutzerbild von Mariaki
Mariaki

Registriert seit: 21. Sep 2008
64 Beiträge
 
RAD-Studio 2010 Arc
 
#3

Re: Kann fehler nicht finden, Programm hängt sich auf

  Alt 28. Okt 2008, 16:33
diese art Quelltexte zu schreiben habe ich mir bei HTML angewöhnt und ich komme damit eigentlich ganz gut klar. und außer mir sieht ja normalerweise niemand. Aber ist ja egal.
Trotzdem danke!
Benedikt
Warum merken die ganzen Christen eigentlich nicht, dass Gott veraltet ist. Zur Zeit von Jesus war er ein gutes Medium um Moral zu verbreiten.. aber Heute?!?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Kann fehler nicht finden, Programm hängt sich auf

  Alt 28. Okt 2008, 16:39
Wenn sich ein programm "aufhängt" ist es das einfachste die Pause Taste zu drücken und zu schauen wo es hängt. Dann kann man mit F8 gemütlich Schritt für Schritt weiter gehen und schauen warum da irgendwo bestimmter Quelltext ausgeführt wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#5

Re: Kann fehler nicht finden, Programm hängt sich auf

  Alt 29. Okt 2008, 05:30
Hi
Zitat:
diese art Quelltexte zu schreiben habe ich mir bei HTML angewöhnt und ich komme damit eigentlich ganz gut klar. und außer mir sieht ja normalerweise niemand. Aber ist ja egal.
Nun ja, der Ordnung halber, einen Hinweis auf Formatierung sollte man ernst nehmen und Fehler aus vergangenen Tagen aus Bequemlichkeit nicht immer wieder machen. Die Aussage: "Außer mir ... " ist, wie hier geschehen, so nicht richtig und damit der Lächerlichkeit preisgegeben. Du blamierst dich, mit diesem Stil, nicht der Leser!
Wennn du richtig eingerückt hättest, dann wäre dir aufgefallen, das bei der Repeat-Schleife an der Abbruch-Bedingung
Until Repeat2; etwas faul ist.
Ein Programm was sich scheinbar aufhängt, riecht immer verdächtig nach nicht korrekten Abbruchbedingungen und wie schon angesprochen, die Pausentaste hält dein Programm mit
100%tiger Sicherheit innerhalb der Repaet-Schleife an. Es wird sein, das die Variable vermutlich schon größer 8 ist. Dazu ist sie noch global vereinbart, d. h. sie behält ihren letzten Wert. Besser ist's, diese lokal zu vereinbaren, wenn der Wert außerhalb der Procedure nicht benötigt wird. Trifft auf Repeat2 auch zu.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:38 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