Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Für Fragen von Einsteigern und Programmieranfängern...
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von DL3AD »

... ich verwende aber nicht die mseide. :wink:

Mit diesem Konstrukt der Fehlerbehandlung ploppen drei Fenster auf - eines vom Debugger eines von den Zcomponenten(wennich es richtig sehe)
und dann meine eigentlich gewollte Message.

Ich möchte NUR EINE Nachricht ausgeben und zwar eine die ich festlege.
Wie macht man dass ?

Gruß Frank

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von wp_xyz »

Hast du das mit SearchFileInPath schon ausprobiert (mein Post etwas weiter oben)?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von mse »

DL3AD hat geschrieben:... ich verwende aber nicht die mseide. :wink:

So eine Riesenarbeit wäre es für dich ja nicht gewesen, die application.handleexception() Parameter nachzusehen.
Mit diesem Konstrukt der Fehlerbehandlung ploppen drei Fenster auf - eines vom Debugger eines von den Zcomponenten(wennich es richtig sehe)
und dann meine eigentlich gewollte Message.

Die Zusatzfenster macht wohl Lazarus, im normalen Program wirst du sie nicht haben. In MSEide würde man 'Project'-'Options'-'Debbuger'-'Stop on exception' ausschalten, wenn man keine exception Unterstützung in der IDE will.
Ich möchte NUR EINE Nachricht ausgeben und zwar eine die ich festlege.
Wie macht man dass ?

Code: Alles auswählen

 
 
    procedure TForm1.DBOn;
    begin
    [...]
        ZConDB.Connected      := false;
        ZConDB.Database       := Config.ReadString('Setup','Database','');
        ZConDB.LibraryLocation:= 'libsqlite3.so.0';//Ohne die obige Prüfung kann er auf die lib hier zugreifen.
        try
         ZConDB.Connected      := true;
         QueryLog.Active       := true;
        except
         //mache deine Fehlermeldung
        end;
 

oder

Code: Alles auswählen

 
        try
         ZConDB.Connected      := true;
         QueryLog.Active       := true;
        except
         on e: exception do begin
          //werte e aus und mache eine entsprechene Fehlermeldung
         end;
        end;
 

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von mse »

wp_xyz hat geschrieben:Hast du das mit SearchFileInPath schon ausprobiert (mein Post etwas weiter oben)?

Unter Linux werden libraries gesucht wie hier erklärt:
http://man7.org/linux/man-pages/man3/dlopen.3.html
If filename is NULL, then the returned handle is for the main
program. If filename contains a slash ("/"), then it is interpreted
as a (relative or absolute) pathname. Otherwise, the dynamic linker
searches for the object as follows (see ld.so(8) for further
details):

o (ELF only) If the executable file for the calling program
contains a DT_RPATH tag, and does not contain a DT_RUNPATH tag,
then the directories listed in the DT_RPATH tag are searched.

o If, at the time that the program was started, the environment
variable LD_LIBRARY_PATH was defined to contain a colon-separated
list of directories, then these are searched. (As a security
measure, this variable is ignored for set-user-ID and set-group-
ID programs.)

o (ELF only) If the executable file for the calling program
contains a DT_RUNPATH tag, then the directories listed in that
tag are searched.

o The cache file /etc/ld.so.cache (maintained by ldconfig(8)) is
checked to see whether it contains an entry for filename.

o The directories /lib and /usr/lib are searched (in that order).

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von DL3AD »

Hallo
@wp_xyz - SearchFileInPath habe ich probiert - brachte aber nicht den erwünschten Erfolg.
Mit

Code: Alles auswählen

 
    try
      ZConDB.Connected      := true;
      QueryLog.Active       := true;
    except
      ShowMessage('library not found');
      Halt;
    end;     
 

Komme ich nun zurecht - Kann so meine eigene Fehlermeldung formulieren.
Compilermeldungen kommen zum Glück nur in der IDE.
Muss nun noch prüfen welche objekte ich freigeben muss vor dem Halt

Danke für eure Hilfe !

Gruß Frank

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Unter LINUX Datei ist vorhanden wird aber nicht gefunden

Beitrag von mse »

Es kann aber auch aus anderen Gründen eine exception geworfen werden. Warum willst du nicht die Originalmeldung von Zeos verwenden?

Antworten