Autor Beitrag
wentom
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 20.08.03 23:59 
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:
ausblenden 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.

_________________
Alles Anfang ist schwer...
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 21.08.03 00:18 
Hallo,

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



BeitragVerfasst: 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 ?
ausblenden 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
ausblenden 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.

_________________
Alles Anfang ist schwer...