Relative Pfadangaben und deren Probleme [ERLEDIGT]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Relative Pfadangaben und deren Probleme [ERLEDIGT]

Beitrag von Manfred »

Moin,

heute ist mir etwas sehr heftiges aufgefallen. Mit einem genauen Blick darauf, scheint es aber logisch.

Also folgendes Szenario:

In meinen Programmen arbeite ich vom Programmverzeichnis aus, mit relativen Pfadangaben. Also ..\datenbanken\etc. ..\temp\ usw. Das hatte ich damals eingeführt, damit der Anwender das Hauptverzeichnis nennen kann, wie der will. So weit so gut.

Wenn das Programm nun ein Verzeichnis, oder ein Verzeichnis incl. Dateien nicht findet, wird es kurzerhand einfach erzeugt. Also alles automatisch. Eigentlich recht praktisch. Aaaaber. Ich habe mich immer wieder gewundert, warum in verschiedenen Ebenen Verzeichnisse und leere Dateien stehen, die dort nichts zu suchen haben. Ich habe einfach nicht die Lösung gefunden. Bis auf heute, da hat es heftig geklingelt.

Wenn der User in, oder außerhalb des Programmes ein Dateifenster öffnet (innerhalb auf jeden Fall) wird wohl das CurDir() des Programmes in dem Moment verändert und die ganze Technik verrutscht sozusagen. Es werden dann neue Verzeichnisse und Dateien angelegt, die überhaupt nicht angelegt werden dürfen. Sobald die Dateifenster wieder geschlossen sind, werden dann wohl auch die Pfade wieder zurückgesetzt und alles paßt wieder. Aber erst wieder danach. In meinen Programmen setze ich ja die Verzeichnisse nach einem FileDialog() wieder zurück, aber auch dazwischen, solange das Fenster noch auf ist, bekommt der Rest des Programmes, oder sogar der Programme, das falsche Verzeichnis und macht somit Mist.

Mein Frage wäre jetzt, geht das irgendwie zu umschiffen, oder bin ich jetzt doch gezwungen evtl. beim Programmstart mir zu merken, wie das Hauptverzeichnis heißt um dann feste Vorgaben für die Verzeichnisse zu geben und auf die relative Angabe zu verzichten? Sieht wohl ganz so aus, oder?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Jan »

Moin Manfred,

interessantes Phänomen. Könnte sein, daß ich da auch schon mal drüber gestolpert bin. Und ich hatte mich damals arg gewundert, warum manchmal die Pfade so merkwürdig sind.

Ich lese inzwischen beim Programmstart den Pfad in eine Variable ein, die ich dann an verschiedenen Stellen auslese. Seitdem hatte noch nie mehr irgendwelche Probleme damit.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Das mache ich jetzt genauso. Ich habe zwar sehr viele Routinen zentral dafür, aber trotzdem ist es jetzt ordentlich Tipperei, bis alles geändert und dann getestet ist. Manoman.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Tom »

Ich setze beim Programmstart PATH und DEFAULT, aber dabei geht es ausschließlich um Daten-/Tabellenzugriffe. In der Mehrmandantenversion wird PATH benutzt, um im Pfad den Unterpfad zu wechseln (DEFAULT ist das Datenbankhauptverzeichnis, PATH das jeweils aktuelle Unterverzeichnis mit den mandantenbezogenen Daten). Das funktioniert auch exzellent (wobei ich beim Setzen der Pfade abfange, ob der Pfad relativ ist, und ihn um Laufwerksbezeichner bzw. die korrekte UNC-Notation ergänze). Aber. Der Zugriff auf alle anderen möglichen Daten (z.B. Bilddateien, Texte usw.) sollte sich hierauf nicht verlassen! Irgendwie funktioniert das Zurücksetzen des vorigen Verzeichnisses beim Aufruf von XbpFileDialog nicht, selbst das manuelle Nachsetzen arbeitet oft nicht zufriedenstellend. Deshalb ergänze ich den Zugriff auf alles, was nicht Tabellen sind, immer implizit um die entsprechenden Pfade. Übrigens sollte man sich auch bei einem INDEX ON nicht auf die Pfadeinstellungen verlassen.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Wie gesagt, das war der richtige Jahreseinstieg. Ich fröddel das jetzt alles auf feste um und dann sollte das Problem weg sein. Ist halt nur blöde Tipparbeit im Moment. Aber wer weiß, welche dubiosen Fehler jetzt plötzlich verschwinden. Ich hatte in letzter Zeit des öfteren Problem damit, dass in DB nicht geschrieben werden konnte, weil die Sätze nicht gesperrt waren, oder nicht zu sperren gingen. Das scheint jetzt alles zu einem Schuh zu werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Herbert »

Ja, ja, die Dynamik der nicht modalen Windowsapplikationen...

Ich hole wie Jan bei Programmstart den App-Pfad und den Pfad (falls vorhanden) für alle Benutzer und (falls vorhanden) für alle Mandanten geltenden allgemeinen Bereich und halte diese fest.
Weitere Pfade, die der Benutzer ändern darf (z.B. für Textbausteine, einen temp. Pfad, für Reports) werden in einer Datenbank (pro Mandant) festgehalten.
Auf diese Art kann der Benutzer sogar direkt mit Netzwerkpfaden arbeiten.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Martin Altmann »

Moin Manfred,
Manfred hat geschrieben:Ich hatte in letzter Zeit des öfteren Problem damit, dass in DB nicht geschrieben werden konnte, weil die Sätze nicht gesperrt waren, oder nicht zu sperren gingen.
das ist dann die Ursache dessen - also kannst Du DIch damit trösten, dass dann die Fehler weg sind.
Ich mache das auch so, dass ich mir am Anfang den Pfad merke und dann nutze. Und auch CurDir() entsprechend merke und wieder zurücksetze (z.B. bei DllCall()-Aufrufen).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Ich denke auch. Mir fällt ein Stein vom Herzen. Als am WE keiner am Programm war und es so vor sich hinwerkelte, lief alles problemlos. Aber da muß man erstmal drauf kommen. :roll:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von AUGE_OHR »

Manfred hat geschrieben:Also ..\datenbanken\etc. ..\temp\ usw. Das hatte ich damals eingeführt, damit der Anwender das Hauptverzeichnis nennen kann, wie der will.
das Hauptverzeichniss ist doch dort wo die Application gestartet wird.

Code: Alles auswählen

PUBLIC ZPATH := LEFT( AppName( .t. ), LEN( AppName( .t. ) ) - LEN( AppName( .f. ) ) )
dumm nur wenn auch die PUBLIC "manchmal" in einem Thread "verloren" gehen kann ... also die PUBLIC einer Class VAR zuweisen.

p.s. warum brauchst du so viele Unterverzeichnisse ?
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Naja,

ich habe ein PUBLIC Objekt, in der die ganzen Parameter stehen. Wenn also die Var nicht mehr da wäre, dann würde noch mehr fehlen und man es sicherlich recht schnell merken.

Warum ich soviele Verzeichnisse brauche? Erstmal, weil ich es hasse alles in ein Verzeichnis zu pfropfen und dann, weil am Jahresende evtl. einigen 100 bis über 1000 Dateien erzeugt werden, die irgendwo schön geordnet stehen sollen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Tom »

Hallo, Jimmy.

Was Du anmerkst, das gilt nur für Applikationen, die auch dort laufen, wo sich ihre Daten befinden. Der Normalfall bei "unserer" Art der Applikationsentwicklung ist allerdings derjenige, dass die App lokal gestartet wird und auf Daten zugreift, die sich anderswo befinden. In Netzen laufen dann zig Instanzen der Apps jeweils lokal und teilen sich die Datenbank auf einem Server, der u.U. auch noch für jeden Arbeitsplatz anders gemappt ist, manchmal sogar per UNC. Wir lösen das auf zwei Arten: Standardmäßig kann in der Verknüpfung ein absoluter Pfad zur Datenbank angegeben werden, den sich das Programm merkt und auch gleich entsprechend bearbeitet (PATH/DEFAULT), und wenn das nicht der Fall ist, wird beim Start nach der Datenbank gesucht bzw. das Zielverzeichnis kann ausgewählt werden. Das wird dann (HKLU) in die Registry geschrieben. Wenn es Mandanten gibt, wird ergänzend eine tabellengesteuerte Verwaltung relativer Datenbankpfade aktiv. Wenn also das Zielverzeichnis mal z:\daten oder mal m:\work\daten ist, sind die Mandanten z.B. dann in \mandant1, \mandant2 usw. verwaltet. Der absolute Pfad wird bei der Aktivierung des jeweiligen Mandanten (z:\daten oder m:\work\daten) um den relativen Pfad ergänzt. PATH bleibt auf z:\daten oder m:\work\daten, DEFAULT wechselt zum jeweiligen Mandanten (z:\daten\mandant1 oder m:\work\daten\mandant1). Bei Tabellenoperationen kann dann ohne Pfad gearbeitet werden, es sei denn, man will z.B. prüfen, ob eine Tabelle existiert oder nicht. Nur beim Erzeugen von Indexen wird der Pfad mit angegeben. Diese Vorgehensweise erlaubt es auch, mehrere Instanzen der App auf einem Arbeitsplatz mit unterschiedlichen Datenbanken zu versorgen.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von AUGE_OHR »

Tom hat geschrieben:Was Du anmerkst, das gilt nur für Applikationen, die auch dort laufen, wo sich ihre Daten befinden.
es ging hier nur um "Hauptverzeichniss" zu den "relativen" Verzeichnissen
Tom hat geschrieben:Der Normalfall bei "unserer" Art der Applikationsentwicklung ist allerdings derjenige, dass die App lokal gestartet wird und auf Daten zugreift, die sich anderswo befinden. In Netzen laufen dann zig Instanzen der Apps jeweils lokal und teilen sich die Datenbank auf einem Server,
ich pflege auch meine Applicationen local auf der Workstation zu haben
Tom hat geschrieben: der u.U. auch noch für jeden Arbeitsplatz anders gemappt ist, manchmal sogar per UNC.
das mit dem MAP per NET USE sollte man nicht mehr für ein "pure" SMB2 Environment verwenden.
Die "Namens-Auflösung" geht über NetBIOS und damit ist der 1st "Contact" über Port 139 statt 445 wenn du UNC benutzt.
(siehe Taskmanager -> Resource Monitor -> Netzwerk -> Ports )
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Hi Jimmy,

und was heißt das jetzt mit SMB2?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Herbert »

AUGE_OHR hat geschrieben:ich pflege auch meine Applicationen local auf der Workstation zu haben
Warum? So muss bei einem Update auf allen Workstations geupdatet werden? Wie löst ihr denn so was?

Ich hole die App ab Netz (ohne dll's gelinkt, also 1 .EXE - ist Ergebnis meiner damaligen Betrachtungen zur Performance). So wird diese transferiert, bevor jegliche Daten geöffnet werden und stellt doch kein Performance-Problem dar.

Manfred: bezieht sich auf das NET USE, welches bei SMB2-Umgebungen nicht mehr verwendet werden sollte.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Meine Apps liegen auch im Netz, wenn es denn eines ist. Wie auch die Daten. Herbert hat m.E. Recht mit seiner Aussage, dass sonst alle WS upgedatet werden müßten, im Falle des Falles. Und da würde ich persönlich Bedenken haben, darauf immer achten zu müssen.

Das mit SMB2 würde ja dann ab Win7 gelten, so wie ich das hier nebenbei mit bekommen habe. Aber wie löst man das Problem denn dann? Oder gilt das nicht, wenn z.B. nur 1 Win7 PC darunter ist? Ich spreche jetzt hier von einem Samba Server, der aber keinen PDC darstellt, sondern von dem einfach nur die Verzeichnisse gemappt werden.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Tom »

Wie auch immer. Unmittelbar nach dem Programmstart sollten aus relativen Pfaden absolute Pfade werden!
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von Koverhage »

Manfred,

CurDir() sollte man (nach meinen Erfahrungen) grundsätzlich vermeiden. Du kannst das ganz einfach testen.
Rufe die Funktion auf wo Du CurDir() benutzt, auf vorher vielleicht Outlook, etc.
Bei fast allen MS Programmen (insbesondere die Mail Programme) verbiegen CurDir.
ich merke mir beim Programmstart Appdata und habe CurDir() damit ersetzt. Damit wird
auf jeden Fall immer das richtige Verzeichnis angesprochen.
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von AUGE_OHR »

Herbert hat geschrieben:
AUGE_OHR hat geschrieben:ich pflege auch meine Applicationen local auf der Workstation zu haben
Warum? So muss bei einem Update auf allen Workstations geupdatet werden? Wie löst ihr denn so was?
bei mir gibt es auf dem Server eine VERSION.DBF die bei Login verglichen wird.
Die verschiedenen Versionen der Applicationen liegen auf dem Server von wo sich die Workstationen dann das Update (oder downgrade) holen können.
Manfred hat geschrieben:Das mit SMB2 würde ja dann ab Win7 gelten, so wie ich das hier nebenbei mit bekommen habe. Aber wie löst man das Problem denn dann? Oder gilt das nicht, wenn z.B. nur 1 Win7 PC darunter ist? Ich spreche jetzt hier von einem Samba Server, der aber keinen PDC darstellt, sondern von dem einfach nur die Verzeichnisse gemappt werden.
hm ... mit Samba ...

unter Vista/Win7/2K8 arbeitet man ja mit "Active Directory" die ich auf den Servern bereitstelle.
die User Rechte und Zugriff werden nun durch "Active Directory" geregelt und nicht mehr durch den Lanmanager.
Der Unterschied wird bei "vielen Server" schnell deutlich : man "müsste" sich bei jedem Server anmelden.

Der Lanmanager nutzt ja IP4 und DNS für die "Namen-IP Auflösung" während bei "Active Directory" nun IP6 verwendet wird.

***
Bittorrent hat "früher" mit "Tracker" gearbeitet die ähnlich DNS die Auskunft gaben "wo" sich "was" befindet.
wenn nun diese "Tracker" nicht online waren funktioniert das System nicht mehr.

in einem Bittorrent System ist aber jeder Client auch ein Server für andere ... und dann kam IP6
damit war es nun möglich das man ohne "Tracker" auskam und so etwas wie PirateBay konnte zumachen ... man brauchte es nicht mehr.

zusätzlich hat IP6 ja auch Verschlüsselung und Komprimierung so das mehr User mehr Warez durch das Netz schicken konnten.

da man nun auf die üblichen UDP Ports und NetBIOS verzichten konnte wurde ein zusätzlicher Sicherheitsfaktor erreicht und man kann statt dessen diese Ports zusätzlich (verschlüsselt) nutzen.
***

"Active Directory" kann also z.B. \\ServerXYZ intern verwalten und könnte den Effekt durch den Explorer auslösen weil Windows nun meint das "dies" dass "aktive" Verzeichnis sei ...

wir Martin schon sagte auch bei DllCall oder ActiveX passiert so etwas z.b. Excel ( C:\Programme\Microsoft Office\Office12\ERROR.LOG )

auch C:\Dokumente und Einstellungen\User\Eigene Dateien\ERROR.LOG kommt schon mal vor und das obwohl ich PUBLIC zPATH ausdrücklich festgelegt habe.
gruss by OHR
Jimmy
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Re: Relative Pfadangaben und deren Probleme

Beitrag von Rolf »

Manfred hat geschrieben:Wenn der User in, oder außerhalb des Programmes ein Dateifenster öffnet (innerhalb auf jeden Fall) wird wohl das CurDir() des Programmes in dem Moment verändert und die ganze Technik verrutscht sozusagen.
Manfred hat geschrieben:CurDir() sollte man (nach meinen Erfahrungen) grundsätzlich vermeiden. Du kannst das ganz einfach testen.
Rufe die Funktion auf wo Du CurDir() benutzt, auf vorher vielleicht Outlook, etc.
Ist der Fehler reproduzierbar? Ich habe dies nun bei mir mal hin und her probiert, kann das Fehlerbild aber nicht bestätigen.
Gibt es eine Schrittfolge. Bei welchem OS oder mit welche MS-Programmen( / Programmversionen) tritt der Fehler auf?

Liebe Grüße
Rolf
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Hm,

ich habe es bemerkt, in dem ich ganz genau den Weg nachvollzogen habe. In dem Moment, wo ich im eigenen Programm ein DateiDialog Fenster geöffnet und darin das Verzeichnis gewechselt hatte, wurde genau von dem gerade angewählten Verzeichnis aus relativ gesehen der Rest an Verzeichnissen und Dateien erzeugt (von einem Hintergrundprozess aus, der gerade werkelte). Das war für mich Beweis genug. Und jetzt, wo ich es umgestellt habe, ist das Problem weg.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Rolf
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 258
Registriert: Do, 27. Apr 2006 12:28
Wohnort: Görlitz

Re: Relative Pfadangaben und deren Probleme

Beitrag von Rolf »

ja, das Problem mit xbpFileDialog() aus dem eigenen Programm verstehe ich, auch wenn ich immer dachte ein restoreDir=.T. stellt alles wieder 100% her.
Aber, dass andere Programme Seiteneffekte auf das Ergebnis von CurDir() erzeugen, kann ich nicht nachvollziehen.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Nö,

das siehst Du etwas falsch. In dem Moment, wo im Filedialog das Verzeichnis gewechselt wird, scheint es das CurDir zu sein und da knallt es dann.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme

Beitrag von brandelh »

Rolf hat geschrieben:dass andere Programme Seiteneffekte auf das Ergebnis von CurDir() erzeugen, kann ich nicht nachvollziehen.
CurDir() fragt das aktuell eingestellte Verzeichnis des Prozesses ab.
JEDES Programm das dieses ändert, hat Einfluss auf curDir().

Ich hatte das vor einiger Zeit bei meinem PDF-Druckertreiber festgestellt,
sobald man dort das Verzeichnis der PDF ändert.

Auch ich prüfe zu Programmbeginn die Verzeichnisse und merke mir was ich brauche.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Relative Pfadangaben und deren Probleme

Beitrag von Manfred »

Genau, ganz zu Anfang prüfe ich, von wo das Programm aus gestartet wird und das merke ich mir dann. Danach dürfte nichts mehr schief gehen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Relative Pfadangaben und deren Probleme [ERLEDIGT]

Beitrag von Martin Altmann »

Anderes schönes Beispiel ist z.B. das Schreiben von Mails mittels SocMapi (DLL-Aufrufe).
CurDir() wird dann umgesetzt auf das Verzeichnis, in dem der Mailclient installiert ist.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten