Autor Beitrag
Tony-S
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Di 13.07.10 22:19 
Hallo Forum ich hänge gerade daran, nur angehakte Items in einer Checklistbox,
bzw. Bitmaps zu speichern, folgendes habe ich versucht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for I := 1 to frmIMG.CheckListBox1.Items.Count -1 do
          begin
             if frmIMG.Checklistbox1.Checked[i] then
             // ich denke hier mache ich etwas falsch, aber was genau versteh ich nicht :/
             begin
                if cbDateiTyp.ItemIndex =  0 then
                begin
                SaveBMPToFile(frmCounter.Frames[I], frmDiashowEinstellungen.tfFilename.Text + ' ' + IntToStr(I)+'.bmp');
                end;
             end;
          end;


Danke schonmal an alle die mich auf den richtigen Weg bringen können :D
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 13.07.10 22:22 
Mir fällt als erstes auf, dass du den ersten Eintrag auslässt. Ist das gewollt? :gruebel:

Ansonsten: Was passiert, was passiert nicht, was sollte passieren, ...? Hast du mal mit dem Debugger schrittweise geschaut was passiert?
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Di 13.07.10 23:06 
Ich glaube ausgelassen habe ich keins, mein Programm "macht" ja z. B. 15 Bilder,
wenn noch alle angehakt sind, dann speichert es auch 15 Stück.
Es soll nun aber nur die angehakten speichern.
Ist eines nicht angehakt bekomm ich eine OutofBounds Fehlermeldung.
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Di 13.07.10 23:31 
Tony-S,

Sebastian meint, Du lässt die for-Schleife nicht bei "0" beginnen und unterschlägst damit das erste Element der Listbox!

Aber abgesehen davon, kann ich Deinen Fehler nicht nachvollziehen, denn der Code, den Du gezeigt hast, ruft im Falle eines nicht gecheckten Eintrags nichts auf! Du sagst aber, dass der Fehler nur bei nicht gecheckten Items auftritt, bei den gecheckten, bei denen Code ausgeführt wird, nicht. Es ist schon ziemlich übersinnlich, wenn etwas, das nicht ausgeführt wird, weil es nicht da ist, eine Fehlermeldung produziert ...

Also entweder ist das, was Du uns gezeigt hast, nur ein Codefragment, oder die Fehlermeldung erfolgt außerhalb dieser Schleife!

Gruß,
Trutz

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 13.07.10 23:34 
user profile iconTony-S hat folgendes geschrieben Zum zitierten Posting springen:
Ist eines nicht angehakt bekomm ich eine OutofBounds Fehlermeldung.
Wahrscheinlich aber in Zeile 8 im geposteten Quelltext, oder?
Deshalb der Hinweis auf den Debugger, dann siehst du doch in wenigen Augenblicken was da passiert.
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Di 13.07.10 23:44 
Sebastian,

wie kommt er bei ungechektem Item[I] in Zeile 8?

Gruß, Trutz

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Di 13.07.10 23:45 
Ok wenn ich jetzt jedes Item in der Listbox auswähle also so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for I := 0 to frmIMG.CheckListBox1.Items.Count -1  do
          begin
             if frmIMG.Checklistbox1.Checked[i] then
             begin
                if cbDateiTyp.ItemIndex =  0 then
                begin
                SaveBMPToFile(frmCounter.frames[i], frmDiashoweinstellungen.tfFilename.Text + ' ' + inttostr(i)+'.bmp');

                end;

bekomm ich in der Unit PictureConvert einen Fehler in der markierten Zeile:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure SaveBMPToFile(Picture: TBitmap; FileName: String); 
begin
  try
    //Falls möglich, Bild speichern
    Picture.SaveToFile(FileName); //<--
  finally
  end;
end;

diesen Fehler:

Fehler

wenn ich aber bei 1 bis .count beginne kann ich zumindestens auch alle bitmaps speichern.
Ich will ja nur abfragen welche angehakt sind, und diese dann speichern ôO.

Edit
____

Wenn ich das so mache, hab ich ja wie gesagt alle x Bilder im Array + dann ich speichere auch im Ordner:

box

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Moderiert von user profile iconNarses: URL-Tags ergänzt.
Einloggen, um Attachments anzusehen!
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Di 13.07.10 23:59 
Das sieht ganz danach aus, dass Du Probleme mit den Zuordnungen der Indices in den verschiedenen Komponenten hast. Denn Du hast offensichtlich einen ListenEintrag 0, zu dem es kein Bitmap im frmCounter.Frames gibt (dort steht offensichtlich nil, daher die Fehlermeldung mit Speicherzugriff auf Adresse $00000000. Das Problem dadurch zu lösen, dass Du die Schleife bei 1 beginnen lässt, hilft Dir nicht.
Und nochmals: Es kann nicht daran liegen dass ein Listeneintrag gecheckt oder ungechekct ist. Denn der Fehler findet offensichtlich in Zeile 8 statt, wie Sebastian vermutet. Dahin kommst Du aber nicht, wenn ein Listeneintrag nicht gecheckt ist!

Prüf mal die Zuordnungen der verschiedenen Komponenten, also ob bei der Liste[I] auch das passende Frames[I] ist. Wenn nämlich nicht, dann könnte der Fehler tatsächlich in Zeile 8 auftreten, wenn z.B. ListBox.Items.Count > Frames.Count! Hat dann aber nichts mit dem Checken zu tun. Meine Vermutung: in Frames[ListBox.items.Count-1] steht nichts oder Frames.Count < ListBox.Items.Count!

Gruß,
Trutz

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Mi 14.07.10 00:30 
Hm ok also hab mal was geändert was das wohl betrifft und zwar hab ich den Startwert meiner Zählvariable
counter:=1 auf ;counter:=0; geändert, nun speichert es auch nur die ausgewählten...

Ist zwar immernoch etwas verworren irgendwie aber es läuft erstmal, danke euch, vorallem dir ASMFreak.
Ich editiere das hier noch mit entsprechenden Code heute Abend dann.
ASMFreak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53
Erhaltene Danke: 9



BeitragVerfasst: Mi 14.07.10 00:33 
Freut mich, gute NAcht!

Gruß, Trutz

_________________
Und aus dem Chaos sprach eine Stimme zu mir: Lächle und sei froh, es könnte schlimmer kommen.
Und ich lächelte und ich war froh – und es kam schlimmer!