Entwickler-Ecke
Windows API - Status während dem Ablauf einer Funktion
Gismo - Mo 28.10.02 09:16
Titel: Status während dem Ablauf einer Funktion
Ich habe eine nichtvisuellen Komponente entwickelt. Bei dem Aufruf einer Funktion soll mir diese ständig einen aktuellen Status über die Abarbeitung liefern. Der Status sollte in Form einer Prozentangabe erfolgen, so dass diese bei der Entwicklung eines Programms auf beispielsweise in einem Statusbar angezeigt werden kann.
aogwaba - Mo 28.10.02 19:33
Hi!
Interessantes Problem, wo bitte ist die Frage?
cu
waba
Christian S. - Mo 28.10.02 20:03
Hi!
Was die Frage ist, kann sich, glaube ich, jeder selbst denken. Das Problem ist wirklich interessant.
Das Du ständig die absolut exakte Prozentangabe erhälst, ist ja schon theoretisch nicht möglich. Du müsstest Deine Funktion in Teilfunktionen zerlegen.
Für diese kannst Du dann entweder ausrechnen oder austesten, in welchem Verhältnis die Laufzeiten der Teilfunktionen zueinander stehen. Also beispielsweise kannst Du Deine Funktion F in G,H,I zerlegen. Die Laufzeiten haben dann ein Verhältnis Laufzeit(G) : Laufzeit(H) : Laufzeit(I). Das Verhältnis kannst Du dann so skalieren, dass die Summe 100 ergibt und damit eine Prozentangabe realisieren.
Problem: Das Laufzeitverhältnis wird nicht konstant sein, sondern von der Eingabe abhängen. Dann musst Du dieses Verhältnis dynamisch während der Programmausführung ausrechnen. Und das kann praktisch beliebig kompliziert werden.
MfG,
Peter
Gismo - Mo 28.10.02 22:14
Ihr habt Recht! Ich hab mein Problem nicht so deutlich gemacht! Mein Fehler! Ich versuch es nochmal anders zu erklären!
-eine Funktion1 ruft eine Funktion2 der Komponente auf
-die Funktion2 gibt ständig einen Status zurück(z.B. in Prozent)
-während die Funktion2 abgearbeitet wird der Status in beispielsweise einem ProgressBar oder Label angezeigt
Der ProgressBar soll aber nicht als Parameter an die Funktion2 der Komponente übergeben werden!!!
Ich versuch es einmal an diesem Beispiel zu verdeutlichen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure Funktion1(); begin //während Komponente1.Funktion2 abgearbeitet wird tue while Funktion2 do ProgressBar.position := Prozent; end;
procedure Komponente1.Funktion2(); begin ...Anweisung1... Prozent:=10; ....Anweisung2... Prozent:=30; ..... end; |
Wie kann ich dies realisieren???
Anonymous - Mo 28.10.02 23:03
Gucken wir mal wie das der Webbrowser macht:
Quelltext
1: 2: 3: 4:
| procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin
end; |
Das ganze ist ein Ereignis. Ist die einfachste Möglichkeit. Dann brauchst du dich um die Progressbar garnicht mehr kümmern.
Gismo - Di 29.10.02 07:44
Und was bitte soll der WebBrowser da??????
Wie soll der mir die abgearbeiteten Prozent meiner Funktion liefern????
Anonymous - Di 29.10.02 11:29
Titel: Re: Status während dem Ablauf einer Funktion
| Gismo hat folgendes geschrieben: |
| Bei dem Aufruf einer Funktion soll mir diese ständig einen aktuellen Status über die Abarbeitung liefern. |
| Popov hat folgendes geschrieben: |
| Gucken wir mal wie das der Webbrowser macht: |
| Gismo hat folgendes geschrieben: |
| Und was bitte soll der WebBrowser da?????? |
Wenn man ein Beispiel bekommt wie eine andere Komponente es gelöst hat, man dadrauf mit einer dummen Frage antwortet weil man nicht bereit ist über das Wort WebBrowser hinwegzulesen, dann kann man sich das Problem auch selbst lösen.
Gismo - Di 29.10.02 12:28
Sorry, ich stand auf der Leitung!!!
Das war doch eine gute Idee und es funktioniert!!!
Sorry nochmal!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!