Autor Beitrag
kiwicht Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 13.01.03 10:50 
Hm... also langsam zweifel ich an mir selber.... bis zur klappse fehlt jetzt echt nicht mehr viel... :x :? :(

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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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... :x :? :(

Bwahren Sie Ruhe, Sie werden gerettet :mrgreen:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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!

ausblenden 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]