| Autor |
Beitrag |
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 13.01.03 10:50
Hm... also langsam zweifel ich an mir selber.... bis zur klappse fehlt jetzt echt nicht mehr viel...
Der Tip von LCS is ja schonma nice, hab ich gleich angewandt.
Ich hab also jetzt in meinem Progg die Routine, die überprüft, ob die dbprog.ini existiert:
if NOT FileExists(ExtractFilePath(Application.ExeName) + 'dbprog.ini') then
SetupForm.ShowModal;
in dieser SetupForm wird einfach nur eine neue Ini erstellt mit den vom Anwender angebenen Verzeichnissen.
Danach werden dann die Datenbanken-Verz. aus dieser INI gelesen, und die ganzen Query´s DBEdit-Felder zugeordnet.
Fertig.
Und jetzt das schönste: Das Programm stirbt an der SetupForm.ShowModal - anweisung. Hab auch SetupForm.Show versucht, oder den Befehl in einem anderen Kontext.... nix.... *heul* .... das leben is nich fair!
Aber die Syntax stimmt doch! Es hat doch bisher immer mit diesem Aufruf geklappt.. und nu auf einma nich mehr????
hülfe... büdde.....
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 13.01.03 11:39
Hast Du zu SetupForm ein OnShow-Ereignis deklariert. Wenn ja, dann schau dort doch mal hinein. Evtl. kann der Fehler, wäre schön zu wissen wie der genau heißt, dadurch entstehen, daß in der Routine auf etwas zugegriffen wird, was noch nicht existiert. Falls vorhanden poste mal Deinen Quellcode zu dem OnShow-Ereignis.
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Mo 13.01.03 11:56
Hallo,
kannst Du einmal den Code posten, in dem Du die SetupForm aufrufst, eventuell sogar die SetupForm selber.
Oder, wenn Du willst, kannst Du den Code auch an meine EMail-Adresse senden.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 13.01.03 11:57
Der Leidensweg des kiwicht x. aus b. an der s.
So leudde, auch wenn euch mein Problem langsam stresst, das muesst ihr euch noch durchlesen, ich verabschiede mich derweilen in die psychatrische klinik.
Programmcode geändert auf:
if NOT FileExists(ExtractFilePath(Application.ExeName) + 'dbprog.ini') then begin
... aus einem öffnen-dialog das verzeichniss für die db auslesen, und
mit folgendem in eine ini im Prog-Verzeichniss schreiben
ini := TIniFileCreate(ExtractFilePath(Application.ExeName) + 'dbprog.ini')
ini.WriteString...
Problem hier:
Ich hab das Prog compiliert und auf den arbeitsrechner kopiert, und siehe an, es geht nicht, weil der wert Application.ExeName IMMER NOCH auf das Verzeichniss vom Entwicklungsrechner zeigt!
Also hab ich Application.ExeName ersetzt durch ParamStr(0).
Klappt erstmal schon besser, weil das Prog jetzt tatsächlich zur Laufzeit das eigene Verzeichnis bestimmt.
Nächstes Prob:
NUR (!) die prog.-datei also in ein verzeichnis LOKAL kopiert, um zu testen, ob die routine auch wirklich funktioniert!
Und sie tut. Jedenfalls lokal.
Also die Prog.Datei, wieder allein, OHNE ini, auf das Netz-LW.
Erste Start. Zack. Funktioniert.
Dacht ich schon: Grund zur Freude, ich habs geschafft!
Denkste.
Nochmal ausgeführt. Fehlermeldung:
"Unknown Internal Operation Error. Lock Violation.
File: bla bla\bla bla\PDOXUSRS.LCK" ... und die Datenbanken, die er beim ersten Start so wunderbar gelesen hat, liest er jetzt auch nicht mehr.
Ich mir kurz an kopf gefasst. Alle Dateien wieder aus dem Verzeichnis gelöscht bis auf die exe, ausgeführt, klappt. nocham ausgeführt. klappt nicht. der ini und der o.g. *.lck nochma explizit für meinen account ALLE rechte gegeben. ausgeführt. klappt nicht.
nochma: alle gelöscht bis auf die exe. alle db´s in das programmverzeichnis im Netzt kopiert. ausgeführt. aha. ich darf im öffnen.dialog zwar noch die db´s auf dem netzlaufwerk angeben, aber danach kommt ma ne andere fehlermeldung:
"unknown internal operating system error. file or directory does not exist. File: bla bla\bla bla\PDOXUSRS.LCK. Lock Violation"
Aha. Logisch. Hab ich ja gelöscht. Hätt ich sie nicht gelöscht, wär die andere Fehlermeldung gekommen....
schöne grüße aus der anstalt, mein arzt meint ich soll mich der löwen-bändigung widmen, ist nich ganz so aufregend...
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 13.01.03 12:19
| kiwicht hat folgendes geschrieben: | Hm... also langsam zweifel ich an mir selber.... bis zur klappse fehlt jetzt echt nicht mehr viel...
|
Bwahren Sie Ruhe, Sie werden gerettet
| kiwicht hat folgendes geschrieben: |
Ich hab das Prog compiliert und auf den arbeitsrechner kopiert, und siehe an, es geht nicht, weil der wert Application.ExeName IMMER NOCH auf das Verzeichniss vom Entwicklungsrechner zeigt!
Also hab ich Application.ExeName ersetzt durch ParamStr(0).
|
Das hör ich zum ersten Mal. Das ist nämlich ein- und dasselbe.
Das Problem mit deinen Lock-Fehlern liegt daran, dass kein globles NetFileDir existiert. Der Hinweis tauchte weiter oben schon mal auf. Schmeiss die ganzen, eventuell vorhandnen .LCK Dateien raus, sorge dafür, dass auf allen PC NetFileDir auf ein erreichbares Netzwerklaufwerk verweist (entweder über BDE-Einstellung oder vom Programm aus), dann sollte das hinhauen.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 13.01.03 12:47
| Zitat: |
Schmeiss die ganzen, eventuell vorhandnen .LCK Dateien raus, sorge dafür, dass auf allen PC NetFileDir auf ein erreichbares Netzwerklaufwerk verweist (entweder über BDE-Einstellung oder vom Programm aus), dann sollte das hinhauen.
|
gemacht. hab die lck gelöscht, und die *.net von C: ins Netz kopiert, da wo auch mein Programm liegt. Dann das netfile-LW mit dem BDE-Admin auf dieses jenes verzeichniss gesetzt, gespeichert, und los.
und dann kommt wieder die lock-violation-meldung... und über novell ist alles freigegeben... 8|
zu dem setup-form problem:
das hab ich ja im grunde durch meine open-dialog-routine gelöst, aber hier trotzdem nochma die oncreate.proc vom setup.form:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| try ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'dbprog.ini'); dirDatBase := ini.ReadString('Verzeichnis','db1',''); [... und noch n paar andre...] finally ini.free; end; EditDB1.Text := dirDatBase; |
und im Form1, also meinem HauptForm steht einfach nur
SetupForm1.Show oder halt ShowModal;..
narf...
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 13.01.03 12:53
| kiwicht hat folgendes geschrieben: |
gemacht. hab die lck gelöscht, und die *.net von C: ins Netz kopiert, da wo auch mein Programm liegt. Dann das netfile-LW mit dem BDE-Admin auf dieses jenes verzeichniss gesetzt, gespeichert, und los.
und dann kommt wieder die lock-violation-meldung... und über novell ist alles freigegeben... 8|
|
Bin mir nicht ganz sicher, aber glaube mich zu erinnern, dass NetDir auf ein Rootverzeichnis verweisen sollte.
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 13.01.03 13:23
hab ich gemacht... klappt nicht. Gleiche Fehlermeldung.
Zumal ich dann ja wieder das Problem habe, so glaub ich, das mein Programm ja nur im eigenen Verzeichnis lesen darf. Führt also wieder auf Konfig-Probleme mit Novell hinaus, da ich da ja nur explizit ein Verzeichniss als Arbeitsverzeichnis angeben kann....
----fazit-------
ich hab mich entschlossen das thema ganz zu lassen.
lokal ausgeführt funzt mein Programm bei installierter BDE ja auf jedem Rechner. Das war zwar nich mein arbeitsziel, aber ist wenigstens schon mal ein Teilerfolg.
Ich vermute einfach mal das die ganze geschichte mit SQL und Novell nicht zusammen passt.
Ich danke für eure rege teilnahme und die vielen lösungs-hinweise, falls noch kreative beiträge kommen werd ich natürlich versuchen diese umzusetzen, aber aktiv beschäftigen werd ich mich nicht mehr mit diesem thema. btw waren eure tips natürlich nicht umsonst, denn schließlich hat das programm ja vorher nicht einmal lokal auf fremden rechnern gefunzt..
ein großes danke an alle
mfg
kiwicht
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Mo 13.01.03 14:20
Um noch einmal auf die PDOXUSRS.net zurückzukommen. Diese sollte für jeden Rechner lokal auf C:\ liegen; auch wenn das Programm selber irgendwo im Netz liegt.
Dazu mußt Du NetFileDir und PrivateDir im Programm ferstlegen z.B. so:
Quelltext 1: 2: 3:
| DatabasePath := 'I:\install.dat\BetterFM\'; Session.NetFileDir := DatabasePath + 'Datenbank'; Session.PrivateDir := ExtractFilePath(Application.ExeName) + 'TMP'; |
Also NetFileDir muß auf das Verzeichnis mit Deiner Datenbank verweisen.
Gruß Sven
_________________ MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mi 15.01.03 16:03
Ich bin der glücklichste Programmierer der Welt:
Ich hatte 2. Posts vorher zwar schoneinmal resigniert, aber das aufgeben viel mir dann doch schwer, und so habe ich mir nächtelang den kopf zerbrochen, und es endlich doch geschafft!
Ich weiß, der folgende Code wurde ganz am Anfang schon mal gepostet, u.a. von Sven und LCS u.s.w., aber da dachte ich, der funzt nit, weil Novell meinem Progg den Zugriff auf die Client-Roots verbietet! Mitnichten, ich bin nur falsch an die Sache rangegangen!
Quelltext 1: 2:
| Session.NetFileDir := 'C:\'; Session.PrivateDir := 'C:\'; |
Zack, und jede Station bei uns speichert erstens seine TMP-SQL-Dateien und zweitens die NET-Datei im eigenen Root!
HERRRLICH! ES FUNKTIONIERT!
ein herzliches Dankeschön an alle Hinweise und beiträge
mfg
kiwicht
ps. das ini-file-problem hab ich auch einfach umgangen, indem ich die registry benutze... manchmal liegt das einfach so nah..... [/list][/quote]
|
|
|