Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Delphi 2009 Warnung wenn keine Connection

Frage Entwicklung Pascal und Delphi

Mitglied: milecl

milecl (Level 1) - Jetzt verbinden

22.08.2012 um 14:21 Uhr, 3279 Aufrufe, 8 Kommentare

Hallo,

ich habe ein Delphi Programm, welches in einem Firmennetz läuft. Jetzt besteht der Wunsch, eine Fehlermeldung auszugeben, wenn keine Connection zur Datenbank aufgebaut werden kann.

Hat jemand eine Idee, wie man das implementieren kann?

Viele Grüße
milecl
Mitglied: Pjordorf
22.08.2012 um 15:03 Uhr
Hallo,

Zitat von milecl:
Hat jemand eine Idee, wie man das implementieren kann?
Ist doch eigentlich ganz einfach. Du gehst zu der Stelle in deinem Delphi Quellcode (Pascal, Object Pascal) wo du die Verbindung zur Datenbank versuchst aufzubauen und schaust welche Rückgabewerte oder Fehler kommen können und reagierst entsprechend mit einer (Desktop) Meldung oder einem (System) LOG Eintrag oder was immer du willst was da passieren soll.

Solltest du gezielte Fragen zu einer Stelle deines Quellcodes haben, kannst du dies ja gezielt hier für Hilfe anfragen

Gruß,
Peter
Bitte warten ..
Mitglied: mrtux
22.08.2012, aktualisiert um 15:47 Uhr
Hi !

Du kannst die Exception abfangen bzw. überschreiben und durch eigenen Code ersetzen.

mrtux
Bitte warten ..
Mitglied: milecl
22.08.2012 um 16:05 Uhr
Hallo Peter,

beim Klick auf die exe ist im Moment noch gar keine DB- Anbindung erforderlich. Erst bei Login. Nun wollen sie aber, das die exe erst gar nicht startet, wenn keine DB Connection möglich. Müsste ich das dann bei onCreate prüfen?

Viele Grüße
Claudia
Bitte warten ..
Mitglied: Pjordorf
22.08.2012 um 17:03 Uhr
Hallo,

Zitat von milecl:
erst gar nicht startet, wenn keine DB Connection möglich.
Das wird wohl sehr schwierig werden, oder? Die zu startende EXE Datei soll erst gestartet werden (Klick durch Anweder) wenn diese auch eine Verbindung zur Datenbank aufbauen kann (könnte). Die EXE Datei soll aber nicht gestartet werden (Klick durch Anwender) wenn die Datenbank nicht verfügbar ist.

Wenn also das starten der EXE Datei durch ein "Klick durch Anwender" erfolgt, wie soll hier also deine EXE Datei wissen das sie starten oder eben nicht starten soll? Um das festzustellen muss aber die EXE Datei gestartet werden, denn wie sonst kann der entsprechende Code (innerhalb der EXE Datei) ausgeführt werden?

Oder wird die EXE Datei durch eine andere Art als "Klick durch Anwender" gestartet?

Denk dran, wir wissen hier nicht was du alles weist. Wir sind hier Blind und Taub und lesen nur was du uns zum Lesen gibst. Und wir wissen auch nicht was du dir denkst oder vorstellst, denn würden wir das wissen könnten wir deine Gedanken lesen und bräuchten nicht zu raten

Du wirst uns entweder noch Informationen liefern müssen, oder selbst deine Frage genauer ausarbeiten, bzw. deine Auftraggeber (Bosse) nach genauerer Information Fragen müssen.

Gruß,
Peter
Bitte warten ..
Mitglied: milecl
22.08.2012 um 17:41 Uhr
Hallo Peter,

genau so, wie Du vermutet hast. Die exe startet durch Klick vom Anwender. Ich dachte, dass es vielleicht so etwas gibt, wie on open oder so ahnlich. Eben das beim Öffnen der exe sofort abgefragt wird, ob die Connection möglich wäre. Sollte das nicht der fAll sein, dann eben eine Fehlermeldung.

Viele Grüße
Claudia
Bitte warten ..
Mitglied: Pjordorf
22.08.2012 um 18:11 Uhr
Hallo,

Zitat von milecl:
Die exe startet durch Klick vom Anwender.
Und dir ist bewusst das deine Forderung nach
das die exe erst gar nicht startet, wenn keine DB Connection möglich
so niemals erfüllt werden kann. (Nicht in diesem universum)

wie on open oder so ahnlich
Wird es wohl auch in Delphi (Object Pascal) geben. Aber brauchst du das wirklich?

Eben das beim Öffnen der exe sofort abgefragt wird, ob die Connection möglich wäre. Sollte das nicht der fAll sein, dann eben eine Fehlermeldung.
Dann tu das doch. Bevor dein Hauptprogramm aufgerufen wird (Hauptmaske / Fenster etc.) kannst du doch eine Abfrage auf deine Datenquelle machen und je nach Erreichbarkeit entweder das Hauptprogramm starten oder eben ein anderes Fenster mit dem Hinweis das die Datenquelle xyz nicht verfügbar sei, einen Eintrag ins LOG schreibst und dem Anwender ein OK Button gibst damit Er/Sie die Anwendung benutzergesteuert beendet. Wo du das in deinem Programm einbaust geht aus deinem nur dir bekannten Quellcode hervor.

Gruß,
Peter
Bitte warten ..
Mitglied: mrtux
22.08.2012, aktualisiert um 21:27 Uhr
Hi!

So arbeitet kein erfahrener Entwickler, man arbeitet normalerweise ereignisorientiert und wertet die Ereignisse aus. Es ist auch völliger Blödsinn den Start einer Exe unterbinden zu wollen. Das geht entweder mit einer zweiten Exe, die vor der eigentlichen Exe gestartet wird oder über eine Batchdatei. Du könntest höchstens nach dem Start der Exe, also zur Laufzeit das Objekt bzw. die Komponente für den Datenbankzugriff erzeugen, die Verbindung prüfen und bei einem negativen Ergebnis der Verbindungsprüfung die Exe wieder beenden. Aber wie gesagt, normalerweise macht man das so eher nicht. Und wenn ich das richtig verstanden habe, sieht das der Kollege Pjordorf ähnlich.

Sei mir nicht böse aber wenn ich solche Threads lese wundert es mich nicht, mit was für Software ich mich manchmal herumärgern muss, wenn ich als reiner Admin unterwegs bin.

mrtux
Bitte warten ..
Mitglied: exchange
22.08.2012 um 22:03 Uhr
Hallo,
ich sehe da zwei Varianten für dich:

1.) Die Anmeldedaten zum DB Server sind gleich und es existiert eine eigene Benutzerverwaltung:
Beim starten die DB Verbindung herstellen (try except ansehen!) und Anwendung beenden.
Idealerweise lagert man so etwas in einem thread aus, da die Applikation im Timeout für den Anwender "einfriert".

2.) Die Anmeldedaten an der DB sind Benutzerspezifisch:
Versuchen eine Datenbankverbindung aufzubauen (ggf. Testuser) oder Rückmeldung auswerten (z.B. Access Denied oder Timeout).

Was Du dir ansehen solltest sind die Ereignisse on create und on show. Dann noch try except und da sind wir auch an einem wichtigen Punkt.

Ein Programm sollte niemals abstürzen und den Benutzer mit einem Hex Code verabschieden. Logfile und eine freundliche Meldung warum ist immer hilfreich. Auch für das Produkt zu verbessern.

Hast Du überhaupt den Quellcode und den passenden Compiler? Mit Delphi mal etwas auseinander gesetzt? Eigentlich ist das nämlich richtig simpel.

Ansonsten wirst Du ein Ziel leider nicht erfüllt bekommen, die exe startet IMMER, die führt früher nämlich nicht deinen Code aus

Gruß
Bitte warten ..
Ähnliche Inhalte
Windows Server
gelöst Hochverfügbarkeit RD Connection Broker (2)

Frage von chris123 zum Thema Windows Server ...

Microsoft
gelöst PROBLEM: Navision 2009 OLE Control (3)

Frage von Server2503 zum Thema Microsoft ...

Batch & Shell
gelöst Connection-Broker 2016 und PowerShell (4)

Frage von xXEddiXx zum Thema Batch & Shell ...

Server
gelöst Active Connections Monitor zur (4)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server ...

Neue Wissensbeiträge
Humor (lol)

Wo ist der Fehler auf dem Bild?

(3)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Proxy Server Settings Cloud + EWS (17)

Frage von SomebodyToLove zum Thema Exchange Server ...

Windows Server
PDF Editor für den Einsatz auf Terminal Servern (16)

Frage von kwame501 zum Thema Windows Server ...

Windows Installation
Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen (14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Virtualisierung
Unterschied zwischen VDI und Terminal Server Lösungen (13)

Frage von tukawi06 zum Thema Virtualisierung ...