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 |
AW: Application.processmessages bremst Programm unter Windows 7 aus
Delphi-Quellcode:
Das erinnert mich doch sehr an DOS-Zeiten
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;
Delphi-Quellcode:
nur wird hier nichts ausgegeben, darum weißt Du nicht wieviel Zeit das Programm in der Warteschleife verbringt.
...
while BufferI<>Bufferlast do begin write('.') end; writeln; TuWas_mit_Buffer; ... Übrigens, ist Value wirklich ein Char oder doch ein AnsiChar? Gruß K-H |
AW: Application.processmessages bremst Programm unter Windows 7 aus
Wirklich ein Char.
Bitte nicht vergessen. Das Programm ist gut 15 Jahre alt. |
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.
|
AW: Application.processmessages bremst Programm unter Windows 7 aus
Zitat:
Gruß K-H |
AW: Application.processmessages bremst Programm unter Windows 7 aus
Test:
Delphi-Quellcode:
Die Differenz zwischen VOR "application.ProcessMessages;" und NACH sollte nicht grösser als 1 - 2 msec sein.
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; Man kann dann testen, ob ein Einfügen von "Sleep(1)" eine grosse Differenz auf ca. 3 msec verkleinert. |
AW: Application.processmessages bremst Programm unter Windows 7 aus
Zitat:
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. |
AW: Application.processmessages bremst Programm unter Windows 7 aus
Zitat:
|
AW: Application.processmessages bremst Programm unter Windows 7 aus
Zitat:
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. |
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. |
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