Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Logisches problem

  Alt 27. Jan 2007, 13:23
Zitat von fuknersascha:
Hab gerade ein Problem und komm einfach nicht drauf.
Hi,
das eigentliche Problem ist kein Logisches! Sorry, aber ich glaube dein eigentliches Problem ist deine Code-Formatierung. Die solltest Du mal ganz dringend überdenken! Sehe ich das richtig, dass Du einzelne begin end; Blöcke verwendest, die nicht weiter zu einer Bedingung/Strucktur gehören? Warum?
Dann solltest Du auch tunlichst die begins und ends korrekt einrücken. An sich solltest Du die 1. auch ruhig in eine eigene Prozedur auslagern. Erhöht einfach die Lesbarkeit!

Ja, für die Lesbarkeit solltest Du immer Einiges tun! Gute Lesbarkeit hilft Fehler zu vermeiden und sollten doch welche drin sein, findest Du die leichter. Form7, Button2, ComboBox4, ... keine guten Namen.

Versuche es mal so:
Delphi-Quellcode:
procedure TForm7.Button2Click(Sender: TObject);
var x,y:integer;
begin
  if ComboBox4.Text <> 'then
   begin
     if ComboBox3.Items.IndexOf(ComboBox4.text)> -1 Then
     begin
       Application.MessageBox(' Vertretungsplan Existiert ','Speicherinformation',48);

       if not ComboBox4.Items.IndexOf(ComboBox4.Text) > -1 Then
       begin
         Combobox4.Items.Add(ComboBox4.Text);
       end; // if not ComboBox4.Items.IndexOf(ComboBox4.Text) > -1

       //1.
       Combobox3.Items.Add(ComboBox4.Text);// Text in die ComboBox3 List übergeben
       Vertrpl:= TStringlist.Create; // Stringliste erzeugen
       Vertrpl.Add(IntToStr(StringGrid1.Colcount));
       Vertrpl.Add(IntToStr(StringGrid1.Rowcount));
       
       for x:= 0 to StringGrid1.ColCount-1 do
       begin
         for y:= 0 to StringGrid1.RowCount-1 do
         begin
           Vertrpl.Add(StringGrid1.Cells[x,y]);
         end; // for y:= 0 to StringGrid1.RowCount-1

         Vertrpl.Add(IntToStr(StringGrid1.ColWidths[x]));
         Vertrpl.Add(IntToStr(StringGrid1.RowHeights[x]));
       end; // for x:= 0 to StringGrid1.ColCount-1
          
       Vertrpl.Add(IntToStr(StringGrid1.Clientwidth));
       Vertrpl.Add(IntToStr(StringGrid1.Clientheight));
       Vertrpl.Add(IntToStr(Ord(StringGrid1.ScrollBars)));
       plan:= ExtractFilePath(ParamStr(0))+'Vertretungspläne\'+ ComboBox4.Text +'.txt';
       Vertrpl.SaveToFile(plan);
       Showmessage('Datei wurde in:' + sLineBreak + plan + ' gespeichert');
       Vertrpl.Free;
                   
       lehrerl:= ExtractFilePath(ParamStr(0)) +'\Lehrer Liste\'+ 'liste.txt';
       ComboBox3.Items.SaveToFile(lehrerl);
       Form8.ListBox1.Clear;
       lehrerl2:= ExtractFilePath(ParamStr(0)) +'\Lehrer Liste\'+ 'alleLehrer.txt';
       Combobox4.Items.SaveToFile(lehrerl2);
       lehrerl:= ExtractFilePath(ParamStr(0)) +'\Lehrer Liste\'+ 'liste.txt';
       Form8.ListBox1.Items.LoadFromFile(lehrerl);
       Button7.click;
     end; // if ComboBox3.Items.IndexOf(ComboBox4.text)> -1
  end // if ComboBox4.Text <> ''

  else
  begin
    Application.MessageBox('Bitte Name eingeben','Speicherinformation',48);
  end;
end;
Ich hoffe Du siehst hier schon einen Fortschritt in der Lesbarkeit. Das ist aber nur ein Anfang! Du solltest wie gesagt noch mehr kleine Prozeduren (mit sprechendem Namen!) einführen, so dass man schnell siehst, was genau gemacht wird.

Gruß Der Unwissende

[edit]
Wo war der rote Kasten?!
[/edit]
  Mit Zitat antworten Zitat