Autor Beitrag
Gismo
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 28.10.02 10:16 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Mo 28.10.02 20:33 
Hi!
Interessantes Problem, wo bitte ist die Frage?

cu
waba
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 28.10.02 21: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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Gismo Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 28.10.02 23: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:
ausblenden 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???
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 29.10.02 00:03 
Gucken wir mal wie das der Webbrowser macht:

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 29.10.02 08:44 
Und was bitte soll der WebBrowser da??????

Wie soll der mir die abgearbeiteten Prozent meiner Funktion liefern????
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 29.10.02 12:29 
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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 29.10.02 13:28 
Sorry, ich stand auf der Leitung!!!

Das war doch eine gute Idee und es funktioniert!!!

Sorry nochmal!!!