Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Application.processmessages bremst Programm unter Windows 7 aus (https://www.delphipraxis.net/193523-application-processmessages-bremst-programm-unter-windows-7-aus.html)

v2afrank 10. Aug 2017 12:48

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Der Schuss ins Blaue hat tatsächlich geholfen. Ich habe daraus ein >10 gemacht und jetzt funktioniert es auch unter 7.
Die Frage wäre natürlich was macht das Processmessages da wirklich unter 7. Aber ob man das herausfinden kann ?

Danke Euch allen erst einmal

p80286 10. Aug 2017 14:44

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Delphi-Quellcode:
procedure TLegacySerialProgrammerModule.ComPortAdapterSendChar(
   Sender: TObject; const Value: Char; const ContentType: TContentType);
begin
   while ComPort1.OutBuffUsed>0 do
       application.ProcessMessages;
   if ComPort1.Open then
   begin
     ComPort1.PutChar(Value);
   end;
end;
Das erinnert mich doch sehr an DOS-Zeiten
Delphi-Quellcode:
...
while BufferI<>Bufferlast do begin write('.') end;
writeln;
TuWas_mit_Buffer;
...
nur wird hier nichts ausgegeben, darum weißt Du nicht wieviel Zeit das Programm in der Warteschleife verbringt.

Übrigens, ist Value wirklich ein Char oder doch ein AnsiChar?

Gruß
K-H

v2afrank 11. Aug 2017 06:10

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Wirklich ein Char.
Bitte nicht vergessen. Das Programm ist gut 15 Jahre alt.

TigerLilly 11. Aug 2017 13:29

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Lass das Application.ProcessMessages mal weg. Damit wird die App zwar "reagiert nicht", aber das kann hier kein langer Zeitraum sein.

p80286 11. Aug 2017 21:31

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Zitat:

Zitat von v2afrank (Beitrag 1378547)
Wirklich ein Char.
Bitte nicht vergessen. Das Programm ist gut 15 Jahre alt.

Eben drum unter XE2 sollte der "alte" char dem AnsiChar entsprechen, und da ich davon ausgehe, daß es sich um binäre Daten handelt, wäre ein Byte wohl besser.

Gruß K-H

t.roller 11. Aug 2017 21:53

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Test:
Delphi-Quellcode:
procedure TLegacySerialProgrammerModule.ComPortAdapterSendChar(
   Sender: TObject; const Value: Char; const ContentType: TContentType);
begin
   while ComPort1.OutBuffUsed>0 do
BEGIN
Label1.Caption:= FormatDateTime('hh:nn:ss:zzz', Time);
       application.ProcessMessages;
Label2.Caption:= FormatDateTime('hh:nn:ss:zzz', Time);
END;
   if ComPort1.Open then
   begin
     ComPort1.PutChar(Value);
   end;
end;
Die Differenz zwischen VOR "application.ProcessMessages;" und NACH sollte nicht grösser als 1 - 2 msec sein.
Man kann dann testen, ob ein Einfügen von "Sleep(1)" eine grosse Differenz auf ca. 3 msec verkleinert.

himitsu 11. Aug 2017 22:29

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Zitat:

Zitat von t.roller (Beitrag 1378625)
Die Differenz zwischen VOR "application.ProcessMessages;" und NACH sollte nicht grösser als 1 - 2 msec sein.

Leg dir einen Timer mit Sleep(1000) auf die Form und ich wette deine Aussage stimmt nicht.

Application.ProcessMessages hat eben gerade das "Problem", dass man nicht weiß was darin alles für Messages verarbeitet werden und Wieviele, also kann auch niemand mit Sicherheit sagen wie lange es dauert und was es für Auswirkungen hat.

z.B. kann dadurch ein Button doppelt geklickt werden und im zweiten durchgang, mitten innerhalb des ersten Aufrufs, kann sonstwas schief gehn, wenn in dem Button auf globale Variablen zugegriffen wird.

jaenicke 12. Aug 2017 14:13

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Zitat:

Zitat von TigerLilly (Beitrag 1378601)
Lass das Application.ProcessMessages mal weg. Damit wird die App zwar "reagiert nicht", aber das kann hier kein langer Zeitraum sein.

Der Comport funktioniert über Messages. Es kann sein, dass ohne die Verarbeitung der Messages gar nichts passiert. Das mussten wir auch schon einmal feststellen.

hzzm 22. Aug 2017 13:04

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Zitat:

Zitat von v2afrank (Beitrag 1378473)
so dass ich Angst habe etwas zu verschlimmbessern.

Ich denke nur, dass es heutzutage gar nicht mehr angebracht ist, auch nur irgendein programmmier-Projekt ohne Git in die Hand zu nehmen.

Selbst wenn ich fuer mich selber, wissend, dass nie ein zweiter Mensch Hand am Code anlegt, fuer mich im Kaemmerchen privat programmiere;
Selbst wenn ich 100%ig weiss, dass es nur eine einzige Version dieser Software geben wird;
Selbst wenn ich ein riesen Projekt in die Hand kriege, mit dem ich noch nie etwas zu tun gehabt habe, das keine Versionskontrolle nutzt.

TortoiseGit -> Rechtsklick -> Create repository here.
Keine Zeile Code ohne Git. Damit gehoert es zur Vergangenheit, irgendetwas versehentlich kaputt zu reparieren.
Versionsverwaltung ist seit 35 Jahren absoluter Standard, aus gutem Grund.


Dann ab ins kalte Wasser und Verbindungs-Krempel immer Threaded laufen lassen.

v2afrank 22. Aug 2017 13:27

AW: Application.processmessages bremst Programm unter Windows 7 aus
 
Ich weiß nicht wie das Gerücht aufgekommen ist. Selbstverständlich benutzen wir ein VCS . Nur eben nicht Git sondern PTC.
Das Trauen bezog sich eher darauf dass ich mir nicht sicher bin ob ich alles überblicke was die Software macht. Ich denke ich würde es auch threaded hinbekommen aber ob ich alle Konstellationen erwische ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz