Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm stürzt beim abbrechen ab (https://www.delphipraxis.net/112325-programm-stuerzt-beim-abbrechen-ab.html)

knolli 18. Apr 2008 20:40

Re: Programm stürzt beim abbrechen ab
 
oh danke! das funzt..

knolli 18. Apr 2008 21:20

Re: Programm stürzt beim abbrechen ab
 
Liste der Anhänge anzeigen (Anzahl: 1)
so jetzt hab ich aber immernoch das problem das mein programm abstürzt...

ich poste mal meinen code:

Code entfernt


[edit=Matze]Code, wie knolli es wollte, entfernt. Eine kürzere Version wird folgen. MfG, Matze[/edit]

Klaus01 22. Apr 2008 08:40

Re: Programm stürzt beim abbrechen ab
 
Vielleicht kannst Du ja sagen, mit welcher Meldung das Programm abstürzt.
Oder bleibt es nur "hängen"?
Wenn es zu hängen scheint, hast Du in Deinen (langen) Schleifen
application.processMessages verwendet?

Wenn es abstürzen sollte, kannst Du ungefähr eingrenzen
wann das passiert. Hast Du schon einmal Haltepunkte
in Deinen Code eingefügt.
Damit kannst Du dirch zu der Stelle vortasten wo es denn knallt.
F7 und F8 um Dein Programm schrittweise abzuarbeiten sind da acuh recht hilfreich.

Grüße
Klaus

Luckie 22. Apr 2008 08:48

Re: Programm stürzt beim abbrechen ab
 
Schön, dass du uns jetzt hier über 760 Zeilen Code gepostet hat. Meinst du nicht auch, es wäre sinnvoller nur die relevanten Routinen zu posten, anstatt alles? Und uns zu sagen, wo das Problem auftritt?

knolli 22. Apr 2008 16:43

Re: Programm stürzt beim abbrechen ab
 
Ok hier ha ich nochmal den code:

Delphi-Quellcode:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~ Wörter filtern ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TWortsuche.Filtern(Sender: TObject);
var
  iLauf:integer;
begin
  For iLauf:=0 to Listbox_Seitenwoerter.Items.Count-1 do
    Begin
      IF Sperrliste.ListBox1.Items.IndexOf(ListBox_Seitenwoerter.Items[iLauf])< 0 then
      begin
        IF LENGTH(Listbox_Seitenwoerter.Items[iLauf])>1 then
        begin
        ListBox_NichtSperrliste.Items.Add(ListBox_Seitenwoerter.Items[iLauf]);
        Listbox_NichtSperrliste.Refresh;
        end;//if
      end;//if
    end;//for
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~ Wörter doppelte zählen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TWortsuche.Zaehlen(Sender: TObject);
var i,iZahler:integer;
    sString:string;
begin
  while ListBox_NichtSperrliste.Items.Count<>0 do
  begin
    sString:=ListBox_NichtSperrliste.Items[0];
    iZahler:=0;
    i:=0;
    while i<=ListBox_NichtSperrliste.Items.Count-1 do
    begin
      If ListBox_NichtSperrliste.Items[i] = sString then inc(iZahler);
      inc(i);
    end;//while2
    For i:=1 to iZahler do
    begin
      If ListBox_NichtSperrliste.Items[0] = sString then ListBox_NichtSperrliste.Items.Delete(0);
    end;//for
    ListBox_Gefiltert.Items.Add(sString);
    ListBox_Anz.Items.Add(intToStr(iZahler));
  end;//while1
end;
das sind die beiden proceduren, die nach dem abbrechen noch durchlaufen werden sollen.
Sie werden einfach auf OnClick aufgerufen.
Immer wenn ich mein programm etwas länger laufen lasse( so ca 30 sek.), dann hängt es in den beiden ewig lange...

hatte schonmal bei 60 sek laufzeit 30 Minuten laufen lassen ohne das was passiert ist...

Klaus01 22. Apr 2008 18:59

Re: Programm stürzt beim abbrechen ab
 
.. einiges gelöscht, da es nicht zielführend war.

Delphi-Quellcode:
procedure TWortsuche.Filtern(Sender: TObject);
var
  iLauf:integer;
begin
  ListBox_NichtSperrListe.items.BeginUpdate;
  For iLauf:=0 to Listbox_Seitenwoerter.Items.Count-1 do
    Begin
      if i mod 20 = 0 then
        application.processMessages;
      IF Sperrliste.ListBox1.Items.IndexOf(ListBox_Seitenwoerter.Items[iLauf])< 0 then
      begin
        IF LENGTH(Listbox_Seitenwoerter.Items[iLauf])>1 then
          begin
            ListBox_NichtSperrliste.Items.Add(ListBox_Seitenwoerter.Items[iLauf]);
            Listbox_NichtSperrliste.Refresh;
          end;//if
      end;//if
    end;//for
  ListBox_NichtSperrListe.items.EndUpdate;
end;
Grüße
Klaus

knolli 22. Apr 2008 20:57

Re: Programm stürzt beim abbrechen ab
 
ähm... :?:
was wird damit
Delphi-Quellcode:
if i mod 20 = 0 then
bezweckt? :gruebel:

Klaus01 22. Apr 2008 21:03

Re: Programm stürzt beim abbrechen ab
 
Zitat:

Zitat von knolli
ähm... :?:
was wird damit
Delphi-Quellcode:
if i mod 20 = 0 then
bezweckt? :gruebel:

Das wenn i durch 20 ganzzahling teilbar ist ein application.processMessages ausgeführt wird.

Wenn Du lange Schleifen abarbeitest, ich es sinnvoll an und ab ein application.processMessages
aufzurufen. Ansonsten erscheint die Applikation so als ob sie eingeschlafen sei.

Dann bin ich nochmal in mich gegangen und habe
einen kleine Testfall für das zählen der Worte(häufigkeit) erstellt.
Du musst ihn nur noch Deinen Begebenheiten anpassen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Byte;
  zaehler: Byte;
  s:String;
begin
  ListBox1.Items.BeginUpdate;
  ListBox1.Sorted:=true;

  while ListBox1.Count > 0 do
    begin
      zaehler :=0;

      s:= ListBox1.Items[ListBox1.Items.Count-1];
      for i:=ListBox1.Items.Count-1 downto 0 do
        if ListBox1.Items[i] = s then
          begin
            application.processMessages;
            inc(zaehler);
            ListBox1.Items.Delete(i);
          end;

      Memo1.lines.add(format('%d %s',[zaehler,s]));
    end;
  ListBox1.Items.EndUpdate;
end;
Grüße
Klaus

everdream 22. Apr 2008 22:53

Re: Programm stürzt beim abbrechen ab
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von knolli
ähm... :?:
was wird damit
Delphi-Quellcode:
if i mod 20 = 0 then
bezweckt? :gruebel:

Das wenn i durch 20 ganzzahling teilbar ist ein application.processMessages ausgeführt wird.

Dass i bei dir iLauf heißt, hat Delphi dir sicher schon gesagt.

knolli 23. Apr 2008 13:07

Re: Programm stürzt beim abbrechen ab
 
Zitat:

Zitat von everdream

Dass i bei dir iLauf heißt, hat Delphi dir sicher schon gesagt.

das i bei mir iLauf ist weiß ich selber... ich wollte nur wissen, warum da geteilt wird...
jetz weiß ichs ja.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:49 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz