Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Label8.Caption in Repeat-Schleife ausgeben ??


wentom - Mi 20.08.03 23:59
Titel: Label8.Caption in Repeat-Schleife ausgeben ??
Hallo,

ich möchte in meinem Programm Eingangssignale zeitlich messen. Wenns geht ziemlich genau. Diese Zeit (als String) möchte ich mir anzeigen lassen. Dazu verwende ich im Moment einen Label. Da ich leider nur sehr kurze Signale (ca. 50 - 100 mSek) und auch zwei davon bekomme, kann ich eigentlich nicht aus der Repeatschleife die den port liest raus. Nun habe ich das Problem, daß die Zeitanzeige erst nach Abbruch der Schleife im Label erscheint.

Gibt es eine Möglichkeit, den String sofort sichtbar zu machen? Im Moment sieht das etwa so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
1repeat
    InValue := PortIn(889); //via IO.dll
    jetzt:=gettickcount;  //in Millisek
    if (InValue = 111and (jetzt > (t1l1 + 200))then                                  line1:=true; //200 Prellzeit
    if InValue = 95 then line2:=true;
    if InValue = 79 then begin
      line1:=true;
      line2:=true; end;
    if ((tende < jetzt) or (stopper = true)) then goto 99//Abruch
                                                                       oder Zeitlimit = Ende
   until ((line1 = true) or (line2 = true));

    ProgressBar1.Visible:=false;
    Label3.caption:='läuft';
//Spur 1
   if (line1 = true)then begin
   t2l1:=jetzt;
   rt1:=t2l1-t1l1;
  <span style="font-weight: bold"> label8.caption:=inttostr(take1); // kommt nicht raus ...</span>   label9.caption:=inttostr(rt1); //muß noch in Form
   take1:=take1+1;
   t1l1:=jetzt;
   line1:=false;
   end;
    goto 1;

Vielleicht weiß jemand was nettes...

CIAO Tom

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


Klabautermann - Do 21.08.03 00:18

Hallo,

guce dir mal:

Delphi-Quelltext
1:
Application.ProcessMessages;                    

an.

Wen das ganze aber so relativ Zeitkritisch ist, solltest du dich ein wenig mit Threads beschäftigen und die Ausgabe in einem anderen Thread laufen lassen als das auslesen der Daten.

Gruß
Klabautermann


wentom - Do 21.08.03 18:00

ich versuchs mal mit nen Timer, der da folgende procedure aufruft. Könnte natürlich schief gehen.... Aber wie kann ich die Kommastellen beeinflussen ?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TMenuForm.Tranline1;
 begin
   ProgressBar1.Visible:=false;
   grosszeit1:=jetzt;
   rundzeit1:=Grosszeit1-Kleinzeit1;
   if runde1 = 0 then rundzeit1:=0;
   rundsek1:=rundzeit1 div 1000;
   rundhund1:=(rundzeit1 - (rundsek1 * 1000)) div 10;
   strrundsek1:=inttostr(rundsek1);
   strrundhund1:=inttostr(rundhund1);
   strrundzeit1:=strrundsek1+','+strrundhund1;
   label8.caption:=inttostr(runde1);
   label9.caption:=strrundzeit1;   //:5:2  ??? Pascal
   Kleinzeit1:=jetzt;
   runde1:=runde1+1;
   line1:=false;
 end;

In Pascal war

Delphi-Quelltext
1:
gotoxy(65,2);write(restmin,',',restsek:2,',',resthund:2);                    

Vielleicht gibts ja ne ähnlich leichte Sache... Ich man merkt wohl die Pascalzeit und den Mangel an Delphi-Kenntnissen ...

CIAO Tom

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.