I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
hvis det er en radiogroup du har så kan du bruge ItemIndex, ellers kan du løbe controls[] arrayet igennem og checke om det er en radiobutton og der efter om den er checked
Jeg kunne selvfølgelig altid få en timer til at tjekke alle X Radiobuttons hver for sig, men er der en nemmere måde? Den jeg taler om er bare en if-then-else løkke for alle X buttons, men er der en smartere måde?
Lav en OnClick event og sæt alle Menuitems til at pege på den, i denne event kan du så sætte din variabel til captionen på den Menuitem der er trykket på.
>>Lav en OnClick event og sæt alle Menuitems til at pege på den, i denne event kan du så sætte din variabel til captionen på den Menuitem der er trykket på.
Mit problem i dette tilfælde er, at jeg samtidig viser programmets uptime sammen med denne event, og ved en tryk på menuitem'et bliver uptimen ikke opdateret.
den har jeg i en timer, og det virker, men det er fordi (eksempel), når jeg trykker på radiobutton1, så skal label1.caption := 'Du har nu trykket på RB1, og uptime er' + timetostr(time-tid); // men her opdateres uptime jo kun, når jeg trykker på Radiobutton1, og ikke løbende når den er checked.
Kan du så ikke fortsætte med at bruger en timer til uptime og så i OnClick til radiobutton kan du sætte en variabel som du bruger i din Timer event f.eks.:
I din OnClick event: RBcaption:=(Sender as TMenuItem).Caption;
Og i din timer event: label1.caption:='Du har nu trykket på '+RBcaption+', og uptime er' + timetostr(time-tid);
Mht min uptime, har jeg lige erfaret, at det ikke virker efter 00:00.. er der en måde at vise mit programs uptime på, som også sikrer mig mod sådanne fejl?
Ja, du kan få en meget nøjagtig uptime, men så skal du ind og ha' fat i den process handle så kan du bruge windows kald til at få din uptime. en lidt større hitorie, så hvis du er newbee, er det nok lidt "svært"
Jeg ville også give dem til kroning, men han var beskeden og overlod dem til dig. Hvordan kan jeg finde mit programs uptime uden at det skal være helt præcist?
Du kunne f.eks. gemme start tidspunket i en TDatetime var som du sætter når du starter det og KUN når du starter, så burde du kunne bruge, delphi's TDatetime er skuet sådan sammen at man skulle kune bruge -+ til at regne på den
now-prgStart
eller findes der også nogle timebetween func. du kan se i dateutils unit'en, mener jeg den hedder.
Hmm.. kunne jeg ikke oprette en integer I, som ved FormCreate var i:=0, og derefter satte en timer til at i:= i+1; ? Men det kræver vel, at jeg laver noget, hvor det skifter ved 60, og igen ved 60?
- den laver stadig den samme fejl. Hvis jeg strter programmet 23:59:50, bliver klokken af gode grunde efter 10 sek 00:00, og der er det at uptimen bliver mærkelig.
Hov, det er mig der har glemt at rette i koden da jeg skrev den herind. Koden virker, men giver stadigvæk en forkert uptime idet tiden skifter til 00:00
Jeg kan kun sige at der må være noget galt i din kode for her foregår et skift til 00:00 uden problemer. Prøv at lave et lille test program hvor du kun har en label en timer og de par linier kode jeg foreslog. Dvs.:
Ok, det virker i test-programmet, og det er jo rart. Mht det 'egentlige' program virker det ikke, og så vidt jeg kan se er koden identisk, så jeg ved ikke hvor fejlen ligger, men det virker ihvertfald! Er det muligt du kan forklare koden for mig?
Kun den linie. Kan godt se princippet i det, men ikke hvorfor du skelner mellem timerne og minutter,sekunder, og hvad de andre udtryk er for noget. Jeg har vist også plaget dig nok med dette problem, så jeg så meget gerne, at du oprettede et svar i en ny tråd som jeg opretter senere, så kan du få dine velfortjente point!
Først lidt om TDateTime typen som er en Double dvs. den kan have værdier mellem 5.0 x 10^-324 .. 1.7 x 10^308. TDateTime er blot et tal der fortæller hvor mange dage der er gået siden 12/30/1899. Tallet før komma angiver antallet af dage og tallet efter komma angiver delen af 24 timer. Dvs. vil man forøge datoen med 5 dage ligger man blot 5 til, vil man forøge datoen med 12 timer ligger man 0.5 til.
Den første del: IntToStr(Trunc(Now-prgStart)*24) Trunc angiver heltallet før komma, dvs. Trunc(5.67) er 5, så det jeg får med Trunc(Now-prgStart) er antallet af dage som jeg så ganger med 24 for at få antal timer.
Den anden del: formatdatetime(':nn:ss',Frac(Now-prgStart)); Frac angiver tallet efter komma, dvs. Frac(5.67) er 0.67, så det jeg får med Frac(Now-prgStart) er altså delen af 24 timer. Formatdatetime er en function der konvertere en TDateTime til en streng, nn giver minutter og ss giver sekunder.
Håber du kan bruge det til lidt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.