AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Problem bei case // Problem bei Komponenten löschen

Problem bei case // Problem bei Komponenten löschen

Ein Thema von Metallicwar · begonnen am 2. Sep 2010 · letzter Beitrag vom 3. Sep 2010
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 08:18
Das end ist auch zu früh, deshalb sagte ich ja, alles was in die Schleife gehört
Markus Kinzler
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#2

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 08:36

Ich blick nicht mehr wirklich durch in dem Code. ^^
Finde aber nicht die richtige Stelle für das end. Mal kommt die Exception, dann erstellt er mir nur das erste Frame^^.
Hoffe mal ich bekomm das heute noch alles hin. Und am Wochenende wirds dann Zeit den Code umzustellen.
Also greift mir noch ein bisschen unter die Arme^^
mfg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 08:39
Delphi-Quellcode:
for ichecked := Low( CheckListBox1.Items) to High( CheckListBox1.Items) do
begin
  Inc(iErstellteFrames);
  if CheckListBox1.Checked[ichecked] then
  begin
    if iErstellteFrames = iErstellteFrames then
    begin
       ...
    end;
  end;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#4

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 08:57
Hatte es so auch schonmal, da lief es aber leider nicht so wie ich wollte.
Delphi-Quellcode:
procedure TForm1.bitbtnDruckenClick(Sender: TObject);
var
iChecked, iZaehler, iGecheckteFrames, iY, iRunter, iErstellteFrames, i: Integer;
begin
  Formular:=TForm.Create(Self);
  Formular.ClientHeight := 1500;
  Formular.ClientWidth := 670;
  l:=TComponentList.Create;
  L.OwnsObjects:= False;
  iGecheckteFrames := 0;
  iErstellteFrames := 0;
  iY := 0;
  iRunter := 0;
  iZaehler := 0;
  for ichecked := 0 to CheckListBox1.Items.Count-1 do
  begin
    Inc(iErstellteFrames);
    if CheckListBox1.Checked[ichecked] then
    begin
      if iGecheckteFrames = iErstellteFrames then
      begin
        ShowMessage('Zwischenablage drucken + aktuelle Form drucken');
      end
      else
      begin
        if iZaehler = 10 then
        begin
          for I := l.Count -1 downto 0 do
          begin
            Frames:= (L[i] as TFrame4);
            Frames.Free;
          end;
          ShowMessage('Formular in Zwischenablage kopieren + Formular leeren');
          iZaehler := 0;
          iGecheckteFrames:= iGecheckteFrames + 1;
          if iGecheckteFrames = iErstellteFrames then
          begin
            ShowMessage('Zwischenablage drucken + aktuelle Form leeren')
          end;
        end
        else
        begin
          if iZaehler = 0 then
          begin
            Frames := TFrame4.Create(Self);
            L.Add(Frames);
            Frames.ClientHeight := 200;
            Frames.Name:='';
            Frames.Top := iY;
            Frames.Parent := Formular;
            iZaehler := iZaehler + 1;
            iGecheckteframes := iGecheckteframes + 1;
            if iGecheckteFrames = iErstellteFrames then
            begin
            ShowMessage('Zwischenablage drucken und aktuelle Form drucken');
            end;
          end
          else
          begin
            if iZaehler <= 4 then
            begin
              Frames := TFrame4.Create(Self);
              L.Add(Frames);
              Frames.ClientHeight := 200;
              Frames.Name:='';
              Frames.Top := iY + Frames.ClientHeight;
              iY := Frames.Top;
              Frames.Parent := Formular;
              iZaehler := iZaehler + 1;
              iGecheckteFrames := iGecheckteFrames + 1;
              if iGecheckteFrames = iErstellteFrames then
              begin
                ShowMessage('Zwischenablage drucken + aktuelle Form drucken');
              end;
            end
            else
            begin
              if iZaehler = 5 then
              begin
                Frames := TFrame4.Create(Self);
                L.Add(Frames);
                Frames.ClientHeight := 200;
                Frames.Name:='';
                Frames.Left := 350;
                Frames.Parent := Formular;
                iZaehler := iZaehler + 1;
                iGecheckteframes := iGecheckteframes + 1;
              end
              else
              begin
                Frames := TFrame4.Create(Self);
                L.Add(Frames);
                Frames.ClientHeight := 200;
                Frames.Name:='';
                Frames.Left := 350;
                Frames.Top := iRunter + Frames.ClientHeight;
                iRunter:= Frames.Top;
                Frames.Parent := Formular;
                iZaehler := iZaehler + 1;
                iGecheckteFrames := iGecheckteFrames + 1;
              if iGecheckteFrames = iErstellteFrames then
                begin
                  ShowMessage('Zwischenablage drucken + aktuelle Form drucken');
                end;
              end;
            end;
          end;
        end;
      end;
    end;
    Formular.Show;
  end;
end;
Was mach ich blos falsch? :O (Der Mittag rückt näher, da muss es fertig sein )
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 09:22
Hmm, sorry, das ist alles etwas zu unübersichtlich.
Hast Du mal einen Haltepunkt gesetzt und hast das Programm Schritt für Schritt laufen lassen?
Wenn Du dabei die Inhalte der Variablen einsiehst, solltest Du sehen, was passiert (und was vielleicht passieren solle).

if A = A then ...

Ist auf jeden Fall unsinnig. Diese Anweisung kann man sich immer sparen und lässt einen Schreibfehler vermuten...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#6

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 09:54
Delphi-Quellcode:
  for ichecked := 0 to CheckListBox1.Items.Count-1 do
  begin
    if CheckListBox1.Checked[ichecked] then
    iErstellteFrames := iErstellteFrames + 1;
  end;
    begin
      if iGecheckteFrames = iErstellteFrames then
Er steppt alle Items durch und wenn eins gecheckt ist dann soll er iErstellteFrames eins hochzählen. So ist es ja richtig.

Dann durchläuft er die if/else Abfragen. Beim ersten mal ist der zaehler ja 0 daher springt er in:
Delphi-Quellcode:
          if iZaehler = 0 then
          begin
            Frames := TFrame4.Create(Self);
            L.Add(Frames);
            Frames.ClientHeight := 200;
            Frames.Name:='';
            Frames.Top := iY;
            Frames.Parent := Formular;
            iZaehler := iZaehler + 1;
            iGecheckteframes := iGecheckteframes + 1;
            if iGecheckteFrames = iErstellteFrames then
            begin
            ShowMessage('Zwischenablage drucken und aktuelle Form drucken');
            end;
durchläuft die Anweisungen und bei if iGecheckteFrames = iErstellteFrames springt er dann runter zu
Delphi-Quellcode:
    ...
end;
  Formular.Show;
end;
also ich weiß da nicht mehr weiter -.-
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Problem bei case // Problem bei Komponenten löschen

  Alt 3. Sep 2010, 10:13
Du musst auf die Begin-End´s achten!

Delphi-Quellcode:
if x then
  MacheWas;
MacheDasNaechste;
Delphi-Quellcode:
if x then
begin
  MacheWas;
  MacheNochWas;
end;
MacheDasNaechste;
Wenn Du die Blöcke und Anweisungen "schön" einrückst und IN RUHE untersuchst, solltest Du wohl eine falsche begin-end Anweisung finden.

In meinem Beispiel oben sieht man auf einen Blick, dass die erste if-Bedingung nur einen Befehl betrifft und die zweite einen Block.

Ich denke, Du warst da in Deinem Code nur etwas zu schlampig.

Ordner das mal und zeig es uns dann notfalls nochmal ...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:44 Uhr.
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