Autor Beitrag
Fabian E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: Mi 23.04.08 20:45 
hallo zusammen,

ich bin hier grade echt am verzweifeln... :(
ich versuche einen anständigen lasebalken zu programmieren... da ich leider mein maximum nicht kenne und dieses dynamisch erhöht wird, muss ich das anders lösen. ich hab schon daran gedacht die prozentzehl vor dem erhöhen zu nehmen und nach dem erhöhen diese wieder zu nehmen. nur dann passiert natürlich nichts...
ich steh hier grad total aufm schlauch... es war ein langer tag, vielleicht kann mich ja jemand erlösen...

Also hier das problem nochmal in kurzfassung:

Eine progressbar zum ladefortschritt, viele methoden die den zustand über eine andere methode verändern können(den balken weiterschieben) Da ich auch ein paar schleifen habe weiß ich erst zur laufzeit, bzw erst wenn ich an der jeweiligen stelle bin wie mein maximum aussieht. --> muss dynamisch erhöht werden. nun möchte ich, dass mein balken schön passend dazu ansteigt...

gruß
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 24.04.08 12:10 
Hi
Vielleicht liege ich falsch und es geht auch anders, aber ich würde mich nicht von den 100 % trennen. Angenommen, du hast 1200 Schritte, dann brauchst du einen Step von 100/ 1200. Diesen addierst du dann bei jedem Durchlauf und setzt den abgescnittenen Wert (Trunc) in deine Progressbar-Position. Das funktioniert auch mit Werten von 33, dann ist deine Schrittweite eben größer
sieht dann etwa so aus....
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Var Step   : Double;
    BarPos : Integer;
Begin
   Step:=100/MyStepCount; // ist der ermittelte Wert der Durchläufe
   BarPos:=0// auf Anfangswert setzen
   For i:=1 to MySepCount do 
   Begin
     tu_irgendwas....
     BarPos:=BarPos+Step;
     MyProgressbar.Position:=Trunc(BarPos);
   end;
end;

Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Do 24.04.08 12:51 
Ich glaube, dass "der ermittelte Wert der Durchläufe" unbekannt ist. Das macht die Sache dann doch wieder schwieriger. Vielleicht ginge es einfacher, wenn du keinen stetigen Anstieg der Progressbar implementierst, sondern einen der auch springen kann. Dann musst du keinen Initialisierungsdurchlauf oder so machen.

Gruß

Calculon
--

_________________
Hallo Mutti
Fabian E. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: Do 24.04.08 13:14 
genau, die anzahl der durchläufe ist leider nicht bekannt...
das springen sieht halt nicht so schön aus... :(
Oder aber ich müsste viele sprungpunkte setzen, was dann doch sehr aufwendig wäre...aber so werde ich es dann wohl machen...

Oder weiß noch jemand eine andere lösung?

gruß
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Di 29.04.08 18:03 
hi
Nun, zur Laufzeit wirst du doch die Schleifendurchläufe berechnen können. Es sei denn, du nutzt nur Repeat oder While Schleifen mit unbekannten Aussprungsadressen. Eine variirende Anzahl, deren Endwert aber berechnet werden kann, schreit regelrecht zur Benutzung der Prozentanzeige. Daher überlege, ob es nicht eine Brauchbare Lösung ist, auch mit der von mir vorgeschlagenen Routine zu arbeiten. Nutzt du While oder Repeat denke ich kannst du es mit 67% .. 78% .. 85% etc. durchsucht beschreiben und dann auch entsprechend früher aussteigen. Andererseits mußt du ein Endkriterium für deine Schleifen haben, sonst hast du auch ein anderes Problem.
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Fabian E. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 554

Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
BeitragVerfasst: Di 29.04.08 21:49 
ja, natürlich weiß ich die anzahl zur laufzeit...
allerdings müsste ich dann die schleifenköpfe der if-schleifen zweimal auswerten bzw auslesen lassen...ich weiß nicht ob sich der aufwand dafür lohnt... im moment habe ich so, dass ich an beliebigen stellen meine bar erhöhe und am ende hab ich nachgesehen wie oft dies geschehen ist. den wert nehme ich einfach als maximum der bar.
ist nicht schön und funktioniert nur für diesen einen fall(im moment gibt es auch keine anderen) aber es tut seinen zweck.

gruß