| Autor |
Beitrag |
kiwicht
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Do 09.01.03 09:25
Hallöchen...
ich hab mal ein etwas komplizierteres Problem:
Und zwar hab ich ein Programm geschrieben, das per SQL auf 4 DB zugreift. Die DataKontrol-Elemente werden zur Laufzeit mit den Datenbank-Feldern verknüpft (DBEdit1.DataField := Feld1 ... u.s.w.) Über eine CFG-Datei die im Root, also C: liegt, erhält das Programm die Informationen, wo diese DB´s liegen. Das Programm selber liegt auf einem durch Novell-Netware kontrolliertem Laufwerk. Die DB ansich liegen nochmal auf einem ganz anderen Laufwerk oder auf C: in eigene Dateien.
Will ich nun das Progg starten, sei es über Novell oder über Windows, erscheint jedesmal eine Fehlermeldung von wegen "Acces Violation" und dann "bei der Eingabe der Suchkriterien ist ein Fehler aufgetreten". In dem Progg werden anschließend keine Daten aus der DB angezeigt.
Ich bin bei Novell und Windows admin mit den entsprechenden Rechten, hab auch die Verzeichnisse für mich selber nochmal alle explizit freigegeben, aber trotzdem klappt es nicht. Wenn ich das Programm von meinem lokalem Arbeitsplatz "normal" ausführe, dann geht alles, es muss also mit Novel bzw. dem Netzwerk zusammenhängen.
Hat jemand von euch schonmal ein ähnliches Problem gehabt?`
Danke für die Hilfe
mfg
kiwicht
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 09.01.03 20:13
Hi,
wie sieht es denn außerhalb Deines Programmes aus ? Ist da der Zugriff auf den Server möglich ? Hast Du die verfügbaren Laufwerke gemappt ??
Gruß
Hansa
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Fr 10.01.03 09:12
du meinst unter der windows-oberfläche?
das ist alles freigegeben. In der Novell-Netzwerk-Umgebung seh ich ja auch mein Programm. Und wenn ich zum Beispiel mit dem WinCommander in das Verzeichnis wechsle, kann ich Datein löschen, erstellen und verschieben wie ich will.
Die Freigaben für das Verzeichnis sind also alle da. Das Programm schafft es ja auch, die temporären Datein für die SQL-Abfrage zu erstellen, die sehe ich ja dann zur Laufzeit in dem Verzeichnis (qsql...dbf)
Ich hab jetzt auch mal das Progamm so umgechrieben, das es die Konfig in seinem eigenen Vereichnis, also nicht mehr im Root sucht. Klappt auch nicht.
Ich vermute das mein Programm, weil es ja die BDE für die SQL-Verarbeitung braucht (oder nicht?!?), noch auf irgendwelche anderen Verzeichniss lokal zugreifen will. Das es daran liegt? Hilfe... 
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Fr 10.01.03 10:44
Hallo,
am Novell-Netzwerk liegt es nicht.
Aus Deiner Fehlerbeschreibung werde ich leider nicht ganz schlau. Kannst Du etwas detaillierter werden?
Wie wird die Config-Datei ausgelesen? Wie wird sichergestellt, dass die benötigten DB-Tabellen auch gefunden werden? Sind alle Laufwerk-Mappings gleich? Wird das Programm auf mehreren Rechnern ausgeführt (BDE überall installiert?) oder auf welchem Rechner tritt das Problem auf?
_________________ 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: Fr 10.01.03 11:13
ok.. also nochmal genau:
1. verknüfpung zum programm wird über "von novell gelieferte anwendungen" geöffnet
2. die erste fehlermeldung:
Acces violation at adress ..... in module pegelsuche.exe read out of address ....
3. ok gedrückt.. dann die zweite fehlermeldung:
bei der eingabe der suchkriterien ist ein fehler aufgetreten
4. wieder ok gedueckt, programm startet, aber alle dbedit-felder sind leer, genau wie die grid´s.
Die Verzeichnisse der DB´s werden wie gesagt aus einer Konfig-Datei gelesen, die sich mittlerweile direkt im Programmverzeichniss befindet.
Die Routine zum Auslesen dürfte wohl standard sein:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| ini := TIniFile.Create('vorfisch.cfg'); dirFirmendt := ini.ReadString('Verzeichnis','firmendt',''); dirFirmentxt := ini.ReadString('Verzeichnis','firmentxt',''); dirVorgbuch := ini.ReadString('Verzeichnis','vorgbuch',''); dirSchadort := ini.ReadString('Verzeichnis','schadort',''); dirFileLink := ini.ReadString('Verzeichnis','filelink','');
ini.free; |
danach wird den Query´s der DB´s zur Laufzeit über DatabaseName die entsprechende DB zugeordnet. Dann werden alle Daten per SQL und SELECT * FROM... angezeigt. etc.
Das ganze findet in einer TRY - EXCEPT-Schleife statt.
Sollte hier ein fehler auftreten, wird ein Formular aufgerufen, in dem ich die Verzeichnisse neu bestimen kann.
Was dann noch alles passiert, dürfte wohl uninteressant sein.
Fakt ist:
BDE ist installiert.
Fakt ist auch:
Das Programm funktioniert auf dem Entwicklungs-Rechner ohne Einwände!
Und Fakt ist außerdem, und das ist ja das verwirrende:
Das Programm funktioniert, wenn ich es auf dem Arbeitsrechner LOKAL ausführe, und es funktioniert auch, wenn ich es in einer von der WINDOWS-FREIGABE kontrollierten netzwerk-ressource ausführe.
Es klappt halt nur nicht mit der Novel-Freigabe, die ich aber definitv brauche!
*snif* .... ich bin der Verzweifelung soooo nahe.....
danke erstmal für eure bemühungen und anteilnahme ...
mfg
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Fr 10.01.03 11:17
achso.. beinahe vergessen.. sorry:
| Zitat: |
Sind alle Laufwerk-Mappings gleich? Wird das Programm auf mehreren Rechnern ausgeführt (BDE überall installiert?) oder auf welchem Rechner tritt das Problem auf?
|
Die Mappings stimmen. wie gesagt, mittlerweile liegen ja ALLE benötigten dateien, cfg-datei und db´s, in dem gleichen verzeichnis.
im moment bin ich noch der einzige nutzer des programmes, wird also nicht gleichzeitig wo anders ausgeführt...
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 10.01.03 11:17
Hi,
als was bist Du denn eingelogged ? Zum testen würde ich immer "Supervisor" verwenden, aber so schlau bist Du wohl auch.
Gruß
Hansa
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 10.01.03 11:27
Da Du die BDE verwendest: verwendest Du die Datei PDOXUSRS.NET? Hast Du die Pfade für NetFileDir und PrivateDir gesetzt?
_________________ 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: Fr 10.01.03 11:59
| Zitat: |
als was bist Du denn eingelogged ? Zum testen würde ich immer "Supervisor" verwenden, aber so schlau bist Du wohl auch.
|
.... admin.... ich denke das reicht aus...
| Zitat: |
Da Du die BDE verwendest: verwendest Du die Datei PDOXUSRS.NET? Hast Du die Pfade für NetFileDir und PrivateDir gesetzt?
|
... ähhh... jetzt werd ich stutzig.... die datei kenn ich, heisst bei mir aber etwas anders: PDOXUSRS.LCK. die erstellet er, wenn sie nicht da ist, in dem Programm-Verzeichniss..... ich dachte erst die kommt von Novell??
Und die Pfade, die du da nennst, hör ich zum ersten Mal. Wo muss ich die setzten? Bei der BDE??
mfg
PS: DANKE DANKE DANKE das ihr mir helft... ich wär sonst total verloren.... 
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 10.01.03 12:41
Hi,
| Zitat: | .... admin.... ich denke das reicht aus...
|
Im Novell-Netzwerk heißt derjenige, der alle Rechte hat aber nun mal SUPERVISOR  Admin ist so was wie Karl-Heinz.  Nicht, daß es doch noch an sowas liegt.
Gruß
Hansa
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Fr 10.01.03 13:24
Hm... das stimmt natürlich.
Ich hab aber jetzt nochmal nachgeschaut, und mir für das Verzeichniss (inkl. der enthaltenen Dateien) explizit selber Supervisor-Rechte zugeordnet...
allein die tatsache das ich das kann, heisst doch eigentlich schon, das ich auch der nutzer mit den höchsten rechten bin, oder?
jedenfalls klappts trotzdem nicht...
ich denk schon, das die rechte für die Programm-Datein ausreichen, aber ich vermute halt, das das Programm noch irgendwo anders drauf zugreift, wo es noch keine freigaben zu hat!?!
mfg
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Fr 10.01.03 13:55
Hallo,
an den Rechten liegt es nicht. Das einzige was benötigt wird, sind Schreib- und Leserechte auf die entsprechenden Verzeichnisse.
So wie es aussieht, deutet alles auf einen Konfigurationsfehler der BDE hin.
In der Systemsteuerung kannst Du in der "BDE-Verwaltung" unter "Konfiguration" - "Treiber" - "Native" - "Paradox" das Net-Dir einstellen, in dem sich die "pdoxusrs.net" befindet. Bei mir ist dort "C:\" eingestellt.
Mit diesen Einstellungen und ohne Supervisor- und Adminrechte kann ich Querys und DBF's abfragen usw.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Sven
      
Beiträge: 314
D6 Ent, K3 Pro (patched)
|
Verfasst: Fr 10.01.03 13:57
Ich bin gerade auf dem Sprung und kann deshalb nicht selber schauen. Sieh doch mal in die Delphi-Hilfe. Da steht etwas über die Pfade NetFileDir und PrivateDir.
_________________ 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: Fr 10.01.03 19:44
| Zitat: |
Sieh doch mal in die Delphi-Hilfe. Da steht etwas über die Pfade NetFileDir und PrivateDir.
|
*moep* .... die ist englisch... aber naja, ich hab mich durchgekämpft... war am ende aber auch nicht sehr vielsagend, weil ich ja im grunde nur das zur laufzeit ändern könnte, was ich so ja schon über den bde-admin getan habe... siehe den hinweis von smiegel
aber mir ist gerade was anderes aufgefallen:
und zwar mein verweis zu der INI-Datei. Der ging ja erst auf c:\dbprog.ini. Als ich dann der Meinung war, das mein Programm nicht auf C: zugreifen kann, von wegen novel-freigabe und so, hab ich den verweis auf das programm-verzeichnis ändern wollen: also einfach:
"TIniFileCreate('dbprog.ini');
kann es sein das es daran liegt? findet er die INI nicht, weil das keine korrekte, relative Pfadangabe ist??
mfg & big thx
kiwicht[/code]
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 10.01.03 19:52
Hi,
| Zitat: | | . Als ich dann der Meinung war, das mein Programm nicht auf C: zugreifen kann |  Ist das da Dein Ernst ? Außerdem : In der BDE einen User "Admin" anzulegen, was soll Dir das bei Novell bringen? Das hab ich Dir doch schon gesagt. Da heißt der Oberaufseher eben SUPERVISOR und eben nicht Admin!
Gruß
Hansa
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Fr 10.01.03 23:55
 aber ich hab doch alles was ich brauch als admin bei netware... und über mir steht doch bei uns auch kein anderer..... ich versteh das nicht ganz.... andererseits, ich geb mir doch selber, als admin, die vollen supervisor-rechte bei der nutzung des verzeichnesses. also kann es doch darin nich wirklich liegen. das der admin nicht der ober-master ist, möcht ich dir gerne glauben, aber wenn ich nunmal als admin alle rechte eines supervisors habe?!
| Zitat: | In der BDE einen User "Admin" anzulegen, was soll Dir das bei Novell bringen?
|
da musst du was falsch verstanden habe... ich bin bei novel als admin angemeldet, mit, meiner meinung, supervisor-rechten... und im novel-administrator, also dem prog um user und programme hinzuzufügen, hab ich dem admin, also mir, für mein programm volle supervisor-rechte zugewiesen.
in der bde hab ich jetzt nur versucht das über die einstellungen für die NetDir von Paradox hinzubiegen, was ja letztenendes auch nicht die lösung war....
das mit C: mein ich so:
ich kann bei novel in den eigenschaften von dem Prog ja ein arbeits-verzeichnis festlegen. meines erachtens genau eins! vorher war mein prog so geschrieben, das es die ini-datei auf C: gesucht hat. das klappt zwar wenn ich es lokal ausführe, aber auf dem novel-server gehts nich mehr.
also hab ich dem programm gesagt: suche die ini jetzt immer im programm-verzeichnis. weil das hat mittlerweile alle möglichen freigaben die es nur geben kann in windows und novell.
meine vermutung war jetzt: ich hab die relative pfad-angabe im TIniFile.Create-Teil falsch geschrieben....
tja, und da steh ich jetzt.. max in der sonne mitn schlips aufn rücken...
außerdem isses schon spät, ich bin müde und kann kein delphi mehr sehen....
mfg
kiwicht
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Sa 11.01.03 10:41
Hallo,
hast Du einmal mit FileExists bzw. PathExists geprüft, ob die Ini-Datei bzw. die ausgelesenen Pfade auch existieren. Deine Vermutung, dass er die Ini-Datei nicht findet, scheint des Übels Wurzel zu sein.
Mit ExtractFilePath(ParamStr(0)) erhälst Du den aktuellen Pfad Deines Programmes.
Wenn Du relative Pfade benutzen willst, musst Du die UNC-Schreibweise benutzen: z.B. //mein_server/mein_DatenVolume/mein_Pfad.
Wie schon einmal erwähnt: es werden keine Admin- oder Supervisor-Rechte benötigt. Das Programm braucht nur Rechte (Lesen, Schreiben) für das Verzeichnis in dem es sich befindet.
Meine Programme funktionieren seit Jahren auf diese Weise in einem Novell-Netzwerk mit über 250 Clients.
_________________ 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: Sa 11.01.03 11:51
| Zitat: |
hast Du einmal mit FileExists bzw. PathExists geprüft, ob die Ini-Datei bzw. die ausgelesenen Pfade auch existieren... Mit ExtractFilePath(ParamStr(0)) erhälst Du den aktuellen Pfad Deines Programmes.
|
das ist ne gute idee, das werd ich zuerst mal ausprobieren... wenn´s am ende dann doch daran lag, wär das ja mehr als peinlich...
| Zitat: |
Wenn Du relative Pfade benutzen willst, musst Du die UNC-Schreibweise benutzen: z.B. //mein_server/mein_DatenVolume/mein_Pfad.
|
was du meinst ist glaub ich die absolute pfadangabe, nämlich wenn ich das Laufwerk und das Verzeichniss direkt bestimmen kann, weil die adresse von jeder arbeitsstation aus die gleiche wäre.
Was ich meine ist aber, verglichen mit DOS:
../inifiles/dbprog.ini
Also, eine Verzeichnissebene höher, und dann in das Verz. inifiles...oder halt.
Aber das ist ja erstmal nebensächlich, ich schau mal wo mein Programm so rumwühlt.
Danke nochma vielmals für die Bemühungen!!
mfg
kiwicht
|
|
kiwicht 
      
Beiträge: 1021
Win 7, MacOS
Delphi x, VBA, PHP, ...
|
Verfasst: Mo 13.01.03 09:14
Also den Urheber sämtlichen Ärgers hab ich gefunde, es war, ganz genau, die ini-datei.
Das Problem ist einfach, das ich nich wirklich weiss, wie ich meinem Programm sage, das die ini sich im GLEICHEN verzeichniss befindet.
Bisher hieß es immer:
ini := TIniFile.Create('dbprog.ini');
er sucht damit aber mitnichten im eigenen Verzeichnis, sondern entweder garnicht, weil falsche Syntax, oder ganz woanders.
Daher wiederhol ich noch einmal mit dringlichem Nachdruck (  ) meine frage, um die Problematik präzise auf den Punkt zu bringen:
Wie ist die Syntax in Bezug auf relative Ortsangaben im
"eigenen" Verzeichnis ?
thx
kiwicht
ps. allen anwesenden einen schönen guten morgen, aus dem zugeschneiten Berlin 
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Mo 13.01.03 09:16
Hi
eine Möglichkeit:
Quelltext 1:
| ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'dbprog.ini'); |
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
|