Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3186 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Microsoft
Remote Desktop Connection (9)

Frage von jacktheape zum Thema Microsoft ...

Windows 7
HP Connection Manager mit Windows 7 Gastkonto (4)

Frage von Slowlyer zum Thema Windows 7 ...

Server-Hardware
gelöst Supermicro IPMI Connection failed nach Update (10)

Frage von Fenris14 zum Thema Server-Hardware ...

Router & Routing
gelöst VLAN connection issue (4)

Frage von Erathon zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (12)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...