AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ProgressBar wird nur 1x ausgeführt

ProgressBar wird nur 1x ausgeführt

Ein Thema von Airblader · begonnen am 27. Dez 2004 · letzter Beitrag vom 27. Dez 2004
Antwort Antwort
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#1

ProgressBar wird nur 1x ausgeführt

  Alt 27. Dez 2004, 12:42
Hi!
Also ich will 2 Bilder rotieren (ist eig. eine dynamische Anzahl).
Da allerdings je nach Userwunsch per Checkbox gefragt wird, ob rotiert werden soll, frag ich das in einer Schleife ab.

Die Prozedur sieht so aus(die ShowMessage ist zur Fehlersuche):

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  n: integer;
begin
  for n:=0 to high(buttons) do
  begin
    if (n<=Form1.ComboBox1.ItemIndex+1) AND (checkboxen[n].Checked=true) then
    begin
      Form1.Rotate(bitmaps[n]);
      ShowMessage(IntToStr(n));
    end;
  end;
end;
Ich bekomm durch die ShowMessage sowohl eine 0 als auch eine 1.
Das heisst, die Schleife wird 2x durchlaufen, so wie es gewollt ist.

Die Funktion wird auch tatsächlich 2x ausgeführt.
Aber wieso läuft die Progressbar nur einmal?

Die Position setz ich wieder auf 0 zurück!
Nach dem 1. Durchlauf bleibt die ProgressBar einfach auf 0 und es wird nichts gemacht. (sprich es wird nicht rotiert!!)

Die Rotate-prozedur ist folgende(vielleicht nicht die beste und eleganteste lösung):

Delphi-Quellcode:
procedure TForm1.Rotate(src: TBitmap);
var
  i,j: integer;
  bmp: TBitmap;
begin
  Form1.ProgressBar1.Position := 0;
  Form1.ProgressBar1.Min := 0;
  Form1.ProgressBar1.Max := src.Width;

  bmp := TBitmap.Create();
  bmp.Width := src.Width;
  bmp.Height := src.Height;

  for i:=0 to src.Width do
  begin
    Form1.ProgressBar1.StepIt;

    for j:=0 to src.Height do
    begin
      bmp.Canvas.Pixels[bmp.Width-i,bmp.Height-j] := src.Canvas.Pixels[i,j];
    end;
  end;

  src.Assign(bmp);
  bmp.Free;

  Form1.ProgressBar1.Position := 0;
end;
Die Funktion wird wie gesagt 2x ausgeführt, aber nur 1x wird rotiert (beim 2. scheint er die i und j schleifen nicht mehr durchzulaufen)

hat jemand eine idee warum das sein kann?
Ich hab nun alles durchgeschaut und finde keinen fehler

air
(sorry für den etwas langen post)
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#2

Re: ProgressBar wird nur 1x ausgeführt

  Alt 27. Dez 2004, 12:47
Hi,

setz doch mal nen Breakpoint bei (hier) Zeile 14 und schau, welchen Wert src.Width jeweils hat und (somit) vor allem ob die Schleife durchlaufen wird.


(Breakpoint mit F5, schrittweise durch Code gehen mit F7/F8 )

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: ProgressBar wird nur 1x ausgeführt

  Alt 27. Dez 2004, 12:51
hm...src.Width hat tatsächlich einen Wert von 0 beim 2. durchlauf...

ich schau mir mal eben die lade-funktion an

air

/edit:
och man bin ich blöd.
ich hab in der 2. lade-funktion auch bitmaps[0] geladen anstatt bitmaps[1]

daran dürfte es wohl zu 99,99999999% liegen.
ich änder ebn und teste

air

edit2:
ok...daran lag es.
ich könnte mich ohrfeigen
eine gute stunde such ich danach, lass mir alles ausgeben, aber src.Width nicht...nochmals danke
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
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 11:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz