Autor Beitrag
sintec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Mi 25.04.07 10:51 
Hallo Leutz,

ich habe zwei Programme geschrieben das eine ist ein Sicherungsprogramm und das andere ist zum umbenennen von Dateien stapelweise.Also bei Programme greifen auf Dateien auf der Festplatte zu.

Das Problem ist, dass beide Programme im laufendem Betrieb in dem Task-Manager "Keine Rückmeldung" anzeigen. Die Fenster kann ich auch nicht verschieben und wenn ich ein anderes Programm im Vordergrund hatte (z.B. Firefox) und schließe es, sehe ich auf meinen beiden Programmen ein abdruck von in der Große meines Programms von einer I-Net-Seite.

Weiß einer warum es so ist und wie ich es beseitigen kann?
andras
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 460

Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
BeitragVerfasst: Mi 25.04.07 10:55 
bekommt man sowas denn nicht bei ziemlich großen schleifen??
stapelumwandlungen sind doch schleifen.
Probier einmal dass du das in die schleifen einbaust
ausblenden Delphi-Quelltext
1:
Application.Processmessages;					

hoffe das hilft dir
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Mi 25.04.07 11:00 
Dieses "Keine Rückmeldung" gehört wohl zu den nervigsten Features von XP und höher... Ich hab hier ein Programm übernommen, das ständig sowas provoziert (mein Vorgänger war noch nicht so fit) - und ebenso oft hab ich deswegen Support zu leisten.

Wie @andras schon bemerkte, ist Application.ProcessMessages der Kandidat der Stunde. Man sollte es nur nicht bei jedem Schleifendurchlauf aufrufen. Wer mag, kann das mal tun - und sich anschließend über 100% CPU-Last freuen...

Jeder 100ste oder 500ste Schleifendurchlauf sollte auch reichen - mit ein bissel probieren findest du das richtige Maß.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
sintec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Mi 25.04.07 11:13 
Super

Das Funktioniert hervorragend *freu*

Vielen Dank
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 25.04.07 13:45 
user profile iconOlafSt hat folgendes geschrieben:
Dieses "Keine Rückmeldung" gehört wohl zu den nervigsten Features von XP und höher..

Dsa ist kein Feature von Windows, sondern Unwissenheit, Faulheit oder einfach nur Ignoranz des Programmierers. Und die kann man wohl kaum auf das Betriebssystem abwälzen. Wenn man Software für ein System entwickelt, sollte man zu mindest rudimentär darüber Bescheid wissen, wie das System funktioniert für das man entwickelt.

Windows ist nun mal ein Nachrichten basierendes Betriebssystem. Das bedeutet es verwendet Nachrichten zur Kommunikation mit der Benutzeroberfläche. Das heißt Nachrichten müssen empfangen und verarbeitet werden. Da aber ein Thread immer nur einen Codeteil ausführen kann, kann er entweder Nachrichten empfangen, Nachrichten weiterleiten oder anderen Code ausführen. Wird also anderer Code augeführt, kann das Fenster auf keinerlei Nachrichten reagieren, da es nicht in der Lage ist sie zu empfangen und zu verarbeiten.
Entweder man lagert den betreffenden Codeteil in einem separaten Thread aus, so dass der Hauptthread noch die Nchrichten abholen und weiterleiten kann oder man sorgt dafür, dass der betreffende Code immer mal unterbrochen wird, um eventuell anstehende Nachrichten abzuholen. Für welche Methode man sich letztendlich entscheidet, hängt von Umfang und Arbeitsaufwand ab und muss von Fall zu Fall entschieden werden.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Mi 25.04.07 14:38 
Ich verbitte mir diesen Ton.

Ich programmiere seit 23 Jahren, ich weiß also recht gut, wie das funktioniert. Und ich bin seit Windows 3.1 und Delphi 1 dabei und bin mitgewachsen, weiß also auch recht gut darüber Bescheid, inklusive der Internas. Aufklärungen in dieser Richtung können also ersatzlos entfallen.

Wenn du aufmerksam gelesen hättest, wäre dir aufgefallen, das mein Vorgänger dieses Programm verbrochen hat - nicht ich. Ich darf mich nur ständig aufs neue durch dieses 210K Zeilen-Monster von Anfängercode wühlen und diesen Mist beheben.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 25.04.07 15:39 
user profile iconOlafSt hat folgendes geschrieben:
Ich verbitte mir diesen Ton.

:roll:
Niemand hat dich persönlich angegriffen, und Luckie hat nichts über das Program, welches du als Beispiel gebracht hast, gesagt. Im Gegenteil, er bezog sich lediglich auf die Aussage, dass das "Keine Rückmeldung" ein Feature von Windows XP wäre, was nicht unbedingt wahr ist. Als nachrichtenbasiertes Betriebssystem bringt Windows eben diese Eigenheit mit, dass man sich wie Luckie gesagt hat um die Weiterleitung etc. der Nachrichten gegebenenfalls selbst kümmern muss. Was er nicht gesagt hat, was du aber hineininterpretiert hast, war ein persönlicher Angriff auf deine Programmierfähigkeiten. Durch den Satz "[...]Unwissenheit, Faulheit oder einfach nur Ignoranz des Programmierers" musst du dich ja nicht angesprochen fühlen, oder? ;) Die Aufklärung danach muss ja nicht dir gegolten haben, oder? Ich weiß ausserdem nicht was du mit "diesem Ton" meinst... :gruebel: Luckie hat doch nur sachlichst erklärt, wie Windows mit den Nachrichten umgeht. Und du musst zugeben, wenn ein Programm ein "Keine Rückmeldung" bringt und dies nicht ein einmaliger Absturz durch sehr widrige Umstände ist, dann ist das Programm unsauber programmiert. Und genau das hat Luckie gesagt.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 26.04.07 00:56 
@OlafSt: Wenn du aufmerksam gelen hättest, dann hättsest du festgestellt, dass ichmich in keinem Satz auf dich beziehe bezüglich des Programms, sondern lediglich auf die Aussage, dass Windows daran Schuld wäre, wenn ein Programm nicht mehr reagiert (bzw. diese Meldung im Taskmanager erscheint). Und diese Aussage ist schlichtweg falsch. Windows kann nichts dafür, da dieses Verhalten an der Funktionsweise solcher Betriebssysteme liegt. Genauso wenig kannst du jemanden dafür verantwortlich machen, dass er im Dunkeln nichts mehr sieht. das menschliche Auge ist eben nun mal so konstruiert worden von der Natur.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Do 26.04.07 09:30 
Zunächst einmal entschuldige ich mich für den Wutausbruch. Man sollte nie über ein Programm posten, das man gerade vier Stunden nach einem "Keine Rückmeldung..."-"Fehler" abgesucht hat. Das führt dann dazu, das man nicht richtig liest (im Taskmanager ist hier gefragt - nicht in der Titelzeile des Hauptfensters) und dann Unsinn schreibt.

Ich widerrufe also meine Aussage hochoffiziell - nur der Teil über das Stück Code hier bleibt bestehen.

Frieden ? :beer:

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.