AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Application.processmessages bremst Programm unter Windows 7 aus

Application.processmessages bremst Programm unter Windows 7 aus

Ein Thema von v2afrank · begonnen am 10. Aug 2017 · letzter Beitrag vom 12. Aug 2017
Antwort Antwort
Seite 2 von 2     12
Foren-Tage 2017
DIE Konferenz für Delphi-Entwickler mit vielen Vorträgen und ganztägigen Workshops, veranstaltet u.A. von der Delphi-PRAXiS und Embarcadero.
21.-23. September 2017 in Hamburg · Mehr Infos unter forentage.de.
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
452 Beiträge
 
Delphi XE2 Professional
 
#11

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 10. Aug 2017, 12:48
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
5.570 Beiträge
 
Delphi 7 Personal
 
#12

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 10. Aug 2017, 14:44
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
Programme gehorchen nicht Deinen Absichten
sondern Deinen Anweisungen
Do it with Delphi Programming
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
452 Beiträge
 
Delphi XE2 Professional
 
#13

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 11. Aug 2017, 06:10
Wirklich ein Char.
Bitte nicht vergessen. Das Programm ist gut 15 Jahre alt.
  Mit Zitat antworten Zitat
TigerLilly
Online

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
28 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#14

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 11. Aug 2017, 13:29
Lass das Application.ProcessMessages mal weg. Damit wird die App zwar "reagiert nicht", aber das kann hier kein langer Zeitraum sein.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
5.570 Beiträge
 
Delphi 7 Personal
 
#15

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 11. Aug 2017, 21:31
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
Programme gehorchen nicht Deinen Absichten
sondern Deinen Anweisungen
Do it with Delphi Programming
  Mit Zitat antworten Zitat
t.roller

Registriert seit: 28. Mär 2016
256 Beiträge
 
#16

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 11. Aug 2017, 21:53
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.
E = mc² is Energy = milk * coffee²
"Wenn der Diesel-Motor ein Ei wäre,
hätte man ihn schon längst geshreddert."

Geändert von t.roller (11. Aug 2017 um 21:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
33.084 Beiträge
 
Delphi XE3 Professional
 
#17

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 11. Aug 2017, 22:29
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
6.436 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#18

AW: Application.processmessages bremst Programm unter Windows 7 aus

  Alt 12. Aug 2017, 14:13
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf