Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Logikproblem mit Fokus (https://www.delphipraxis.net/185619-logikproblem-mit-fokus.html)

Sweex 25. Jun 2015 06:48


Logikproblem mit Fokus
 
Hallo Leute!
Ich habe ein ganz spezielles Problem und bin leider noch recht frisch in Delphi. Ich habe eine Anwendung geschrieben die verschiedene Webseiten von mir überwacht und auf einen Fehlerfall prüft. Diese soll mehrmals ausgeführt werden und jeweils in den Vordergrund springen, wenn keine andere Anwendung einen Fehlerfall meldet. Es muss so gemacht werden, da ich nicht immer alle Webseiten überwachen muss. Ich bin erst seit kurzem dabei mir Delphi anzuschauen und steige gerade erstmal in die Materie ein.
Ich möchte also das meine Anwendung bis zu 4 mal gestartet werden kann. Dazu benne ich die Anwendung in Anwendung.exe bis Anwendung 4.exe um, fertige also 4 Kopien an. Die Anwendung weiß, welche Kopie sie ist (per FileNameExtract). Jede einzelne überwacht eine andere Webseite.

Jetzt suche ich nach der einfachsten Lösung um das irgendwie umzusetzen. Alles was ich bisher versucht habe hat einfach nicht funktioniert. Wie kann ich es Lösen das:
-Die Anwendung den Fokus auf die Anwendung setzt die den Fehlerfall hat (es können mehrere Fehlerfälle bei den Anwendungen gleichzeitig vorkommen) aber erst wenn der aktuelle Fehler behoben wurde das er dann einfach den nächsten Fehlerfall in den Focus bringt (ich habe bisher die Entertaste abgefangen dafür - das möchte ich beibehalten).

Ich habe es bisher so versucht, das ich eine gemeinsame Ini datei beschrieben habe und im Fehlerfall hat jede Anwendung ein Haltesignal gesetzt. z.B. wenn Anwendung 3 einen Fehler hatte dann schrieb sie HalteSignal3=True in die Ini Datei. Jetzt hatte ich einen Timer der prüft, ob ein HalteSignal gesetzt ist, wenn nicht sollte er dann zur Anwendung mit Fehlerfall springen. Mit Enter wurde das HalteSignal der Anwendung dann zurückgesetzt. Das funktionierte leider nicht. Sobald mehrere Fehlerfälle vorkamen, stand logischerweise alles.

Mein Kopf raucht. Wer kennt eine einfache Lösung? :-(

himitsu 25. Jun 2015 08:02

AW: Logikproblem mit Fokus
 
Was heißt "überwachen"?

Sind die Programme wirklich 100% der Zeit damit beschäftigt? (oder kann das Einer nacheinander, bzw. im Kreis abarbeiten)

Warum kopiieren und nicht einfach mehrfach starten? Delphi-Referenz durchsuchenParamStr

Oder wie wäre es mit Multithreading? Delphi-Referenz durchsuchenTThread

Und das Hauptproblem löst man z.B. via IPC (oder Messages).
Oder man trennt es erst garnicht in mehrere Anwendungen auf.

Mikkey 25. Jun 2015 08:04

AW: Logikproblem mit Fokus
 
Du kannst das mit einem Mutex (
Delphi-Quellcode:
CreateMutex
/
Delphi-Quellcode:
OpenMutex
) lösen, die Anwendung, die zuerst den Fehlerfall entdeckt, reserviert sich den, die anderen kommen dann nicht dran.

Aber ich glaube, mit den mehreren Anwendungen machst Du Dir das Leben unnötig schwer. Wenn Du in einer Anwendung alle Webseiten prüfst, können sich die Prüf-Abläufe leichter gegenseitig informieren.

BUG 25. Jun 2015 08:58

AW: Logikproblem mit Fokus
 
Ich stimme den bisherigen Antworten zu, die Lösung mit mehreren Anwendungen ist nicht nur unnötig umständlich, sondern auch unmöglich zu bedienen.
Wenn die Intervalle zum Laden der Website groß genug sind, dann braucth man sich auch nicht mit Threads beschäftigen, sondern kann das nacheinander machen.

Die Anwendung kann dann auch gleich alle Fehler anzeigen, nach Wichtigkeit sortieren, usw.

Sweex 25. Jun 2015 11:15

AW: Logikproblem mit Fokus
 
Ich bin gerade noch unterwegs, ich kann das Programm nicht einfach neuschreiben, es ist bereits riesig und war halt nie dafür gedacht das es diese Anforderungen mal erfüllen muss. :-( Ich schaue mir Mutex und IPC mal an, aber ein Haltesignal reicht ja definitiv nicht, es muss dann auf jeden Fall sofort zum nächsten Fehlerfall (nach dem Drücken von Enter) umspringen. Ja das Programm ist eine Form mit TWebbrowser die die Seite jede Sekunde einmal abfragt (ist zeitkritisch) und dann analysiert und hat einen großen Automatisierungswasserkopf dahinter, der verschiedene andere Sachen steuert usw. Ein neuschreiben würde mir größte Bauchschmerzen bereiten :-(

Edit: Ja die Programme können es nicht sequenzell machen, das abfragen muss parallel erfolgen. Ursprünglich war die Anwendung nur für eine Seite geschrieben, daher das Problem :-(

Jumpy 26. Jun 2015 09:20

AW: Logikproblem mit Fokus
 
Hallo,

kannst du das micht so umschreiben, dass jede Anwendung einen Fehlerfall meldet, indem Sie ihn in eine Tabelle (einer DB) schreibt, mit allen nötigen Infos, wobei die Tabelle ein Auto-Inc-ID Feld haben sollte, sowie ein Feld "FehlerErstmaligEntdeckt".
So sammeln sich u.U. in der Tabelle die Fehlerfälle, wobei man das u.U. so machen könnte, dass wenn ein Fehlerfall gemeldet werden soll, der schon vorhanden (und noch nicht behoben) ist, so wird da einfach nur die Zeit im Feld "FehlerZuletztEndeckt" aktualisiert.

In einer neuen Anwendung schaust du halt in diese Tabelle, nimmst den obersten nicht behandelten Fehlerfall, bearbeitest ihn, löschst ihn in der Tabelle oder makierst in als erledigt.

So können alle Anwendungen alleine fröhlich vor sich hinarbeiten und die Anzeige und Bearbeitung der Fehler machst du in einer ganz anderen, neuen Anwendung, die ja ruhig auf den anderen aufbauen kann.

BadenPower 26. Jun 2015 09:46

AW: Logikproblem mit Fokus
 
Zitat:

Zitat von Sweex (Beitrag 1306562)
Ja das Programm ist eine Form mit TWebbrowser die die Seite jede Sekunde einmal abfragt (ist zeitkritisch) und dann analysiert und hat einen großen Automatisierungswasserkopf dahinter, der verschiedene andere Sachen steuert usw.

Das klingt für mich wie ein Spionage-Tool, welches fremde WebSeiten durchforstet und die dortigen Aktivitäten protokolliert. Die eigenen Webseiten können es eigntlich ja nicht sein, denn dann hätte man andere Zugriffsmöglichkeiten (z.B Datenbank) um die angezeigen Daten auszulesen.

bernau 26. Jun 2015 10:00

AW: Logikproblem mit Fokus
 
Zitat:

Zitat von BadenPower (Beitrag 1306681)
Das klingt für mich wie ein Spionage-Tool, welches fremde WebSeiten durchforstet und die dortigen Aktivitäten protokolliert.

Nicht immer alles so negativ sehen ;-)

Zitat:

Zitat von BadenPower (Beitrag 1306681)
Das klingt für mich wie ein Spionage-Tool, welches fremde WebSeiten durchforstet und die dortigen Aktivitäten protokolliert. Die eigenen Webseiten können es eigntlich ja nicht sein, denn dann hätte man andere Zugriffsmöglichkeiten (z.B Datenbank) um die angezeigen Daten auszulesen.

Wenn die Webanwendung auf einem entfernten Server liegt, auf dem man nicht direkten Zugriff hat, oder man auf diesem entfernten Server aus sicherheitsgründen nicht auf die Datenbank direkt zugreifen will, dann macht das schon Sinn.

mkinzler 26. Jun 2015 10:03

AW: Logikproblem mit Fokus
 
[OT]In diesem Fall würde ich dann eine entsprechende Möglichkeit auf dem Server schaffen.[/OT]

Sweex 27. Jun 2015 08:48

AW: Logikproblem mit Fokus
 
Hallo :-)

Also die Idee mit der DB ist dann die beste Lösung gerade für mich vielen Dank :-) Das werde ich so umsetzen und ich weiß das funktioniert auch wunderbar. Ich weiß ich muss noch viel lernen in Delphi, aber ich habe ja praktisch gerade auch erst angefangen.

Und Nein, Es ist kein Spionageprogramm, nur die Software die die Webseiten auswirft ist nicht quelloffen und auch nicht konfigurierbar. ich habe keine Chancen da irgendwas umzustellen, also nicht einfach ein Apache oder oder irgendwas, von dem ich mir zutrauen würde da rumzustricken. Zumal wird im LAN abgefragt, ich belaste also nicht das Netz mit den Seitenabfragen. Seitdem es halbwegs bezahlbare BTX Tarife bei der Telekom gab bin ich im Netz unterwegs und finde die Entwicklung des Internets als Werbungs- und Datenkrake schrecklich. Ich bin der letzte, der sowas unterstüzten würde. Das zu meinen Ansichten :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.
Seite 1 von 2  1 2      

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