Einzelnen Beitrag anzeigen

frieder2008

Registriert seit: 28. Feb 2009
78 Beiträge
 
#6

Re: Unbekannter Fehler in Script; Bitte um Unterstützung!

  Alt 1. Mär 2009, 10:34
Danke für die Rückmeldung.

Zitat von Klaus01:
da sich die Aufgaben von SpeedButton4 und SpeedButton6 doch sehr ähnlich sind,
könnte ich mir vorstellen dafür eine gemeinsame Routine zu schaffen.
Das hatte ich ursprünglich. Aber als dort dieser komische Fehler auftrat, hab ich sie gesplittet, um Interferenzen leichter sehen zu können.

Wie auch immer: habe wieder eine Routine gebaut. Leider kann ich sie nur mit einem Listview und auch nur einmal testen; denn danach ist das Programm "fest", sprich, es kann nichts mehr angeklickt, verschoben evt. werden. Aber eine "Programm reagiert nicht"-Meldung bekomme ich auch nicht. Sieht exakt so aus, als würde ich Form1.disablen. Das tue ich aber nicht. Auch die Except-Anweisung gibt mir keine Rückmeldung bzw. die Routinen werden alle normal abgearbeitet. Was ist da los?!?

EDIT: Wenn ich am Ende des ButtonClicks Form1.enabled:=true setze, dann geht es. Aber wieso das ganze überhaupt? - Evtl. hängt da auch mein anderer Fehler?

Danke für Eure Mühe, gruß, frieder

Delphi-Quellcode:
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
  Wortlistenanalyse(untwortliste,untfilelist);
end;

procedure CountOccurrences(const MyList: TStrings; var Result: TStrings);
  var
    i, CurIndex: Integer;
  begin
    for i := 0 to MyList.Count - 1 do
    begin
      CurIndex := Result.IndexOf(MyList[i]);
      if CurIndex >= 0 then
        Result.Objects[CurIndex] := TObject(Succ(Integer(Result.Objects[CurIndex])))
      else
        Result.AddObject(MyList[i], TObject(1));
    end;
  end;

Procedure Wortlistenanalyse (listenview:TListview; filelist: TFilelistbox);
var
 untgesamt: integer;
 refgesamt: integer;
 listitem: tlistitem;
 Textinhalt: Tstringlist;
 Textinhaltallfiles: Tstringlist;
 tokenlist: TStringlist;
 templist: Tstrings;
 i, ii:integer;
begin
  if filelist.Items.Count=0 then exit;

  listenview.Items.Clear;
  Form1.speedbutton1.Enabled:=false;
  Form1.Enabled:=false;
  Form1.speedbutton4.Enabled:=false;
  Form1.checkbox2.enabled:=false;
  Textinhalt:= Tstringlist.Create;
  Textinhaltallfiles:= Tstringlist.Create;
  tokenlist:= tstringlist.create;
  TempList := TStringList.Create;

  Try
  // Fileliste abarbeiten
    for i:=0 to filelist.Items.Count -1 do begin //Alle Files einlesen
      if fileexists(filelist.Items.Strings[i]) then textinhalt.LoadFromFile(filelist.Items.Strings[i])
        else exit;
      textinhaltallfiles.text := textinhaltallfiles.text + textinhalt.text;
      end;

      //Bei Checked: Alles Kleinbuchstaben
      if Form1.checkbox2.Checked then textinhaltallfiles.Text:=Ansilowercase(textinhaltallfiles.Text);

      //Sonderzeichen raus
      //textinhaltallfiles:= Reinigen(textinhaltallfiles);

      //Geladenes File in Tokens zerlegen
      untgesamt:= Extractstrings([' '], [CHR(039)], pchar(textinhaltallfiles.text), tokenlist);

      CountOccurrences(tokenlist, TempList);
      for ii := 0 to TempList.Count - 1 do
          with listenview do begin
            listitem := items.Add;
            listitem.Caption := templist[ii];
            listitem.SubItems.Add(inttostr(integer(templist.objects[ii])));
            end;

  Except
  ShowMessage('Exception class name = '+Exception.ClassName);
  end;

  Textinhalt.Free;
  TempList.Free;
  Textinhaltallfiles.free;
  tokenlist.free;
  Form1.speedbutton1.Enabled:=true;
  Form1.speedbutton2.Enabled:=true;
  Form1.speedbutton4.Enabled:=true;
  Form1.checkbox2.enabled:=true;
  //if listenview=Object('untwortliste') then Form1.label5.caption:= 'Tokens ges.: ' + inttostr(untgesamt)
  // else Form1.label6.caption:= 'Tokens ges.: ' + inttostr(untgesamt)
end;
  Mit Zitat antworten Zitat