AW: [Allegro] Besondere Variable W
Thomas Fischer
th.fischer at addcom.de
So Jul 3 20:01:27 CEST 2005
Liebe Herren Allers und Berger,
da wir unsere Allegro-Datenbanken im Novell-Netz liegen haben und von allen möglichen Rechnern darauf zugreifen, andererseits aber immer wieder auf DOS-Probleme mit langen Pfaden gestoßen sind, haben wir für alle relevanten Rechner das Allegro-Verzeichnis auf F: gemappt -- und dabei natürlich die beschriebenen Probleme mit dem "\" am Ende.
Mit den DOS-Befehlserweiterungen lässt sich das aber prüfen:
if not \==%-P:~-1% set -P=%-P%\
setzt ein "\" an das Ende von -P wenn keines da ist.
Dann muss man in der Batchdatei (oder vorher) sich vergewissern, dass die Befehlserweiterungen aktiviert sind.
Mit freundlichen Grüßen
Thomas Fischer
> -----Ursprüngliche Nachricht-----
> Von: allegro-bounces at biblio.tu-bs.de
> [mailto:allegro-bounces at biblio.tu-bs.de]Im Auftrag von Thomas Berger
> Gesendet: Samstag, 2. Juli 2005 17:35
> An: Allegro-C Diskussionsliste
> Betreff: Re: [Allegro] Besondere Variable W
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Lieber Herr Allers, liebe Liste,
>
>
> > Wenn das Arbeitsverzeichnis in einem vom Wurzelverzeichnis
> > verschiedenen Verzeichnis liegt, dann hat die besondere Variable W
> > _keinen_ umgekehrten Schrägstrich am Ende.- Beispiel: Ist das
> > Arbeitsverzeichnis
> > c:\allegro, dann hat W die Besetzung 'c:\allegro'.
> >
> > Wenn aber das Arbeitsverzeichnis mit dem Wurzelverzeichnis
> > zusammenfällt, dann endet die besondere Variable W _mit_ dem
> > umgekehrten Schrägstrich.- Beispiel: Ist das Arbeitsverzeichnis
> > c:\, dann hat W die Besetzung 'c:\'.
> >
> > Für mich eigentlich kein Problem mehr, denn diese Nichtparallelität
> > habe ich programmintern ausgeglichen. Aber wer mir dabei in die Karten
> > guckt, der fragt nach dem Warum, und gerne würde ich sagen können, daß
> > hier wieder einmal eine Microsoft-Ungereimtheit kompensiert wird oder
> > werden muß.
> >
> > Drum die Frage an die Windows-Experten und Allegro-Entwickler: Liegt
> > die beschriebene nicht-konsistente Besetzung von W wirklich an
> > Microsoft? Zu gern würde ich das bestätigt bekommen. :-))
>
> Die Besetzung von W liegt an a99 :-)
>
> Das Dilemma ist doch folgendes
>
> C:\ ist das Wurzelverzeichnis auf Laufwerk C
> C: ohne Backslash ist das aktuell auf Laufwerk C eingestellte
> Verzeichnis, das kann irgendeins sein
> C:\allegro ist das Verzeichnis Allegro auf Laufwerk C
> C:\allegro\ ist tendenziell kein legaler Verzeichnisname, scheint
> aber normalerweise immer zu funktionieren, auch wenn man weitere
> Pfade anhaengt, wie etwa c:\allegro\\demo2 (ausser evtl. bei
> allegro-Modulen?)
>
> Diese Asymetrie gibt es tendenziell auch unter U**X:
> "/" ist das Wurzelverzeichnis des Dateisystems
> "/usr" ist das Verzeichnis usr . Um von einem gegebenen Verzeichnis
> in ein Unterverzeichnis zu kommen, muss man "/" dazwischen setzen oder
> darf es nicht: "/" . "usr" ist das Verzeichnis /usr, "/". "/". "usr" ist
> "//usr", d.h. (Cygwin, Linux?) die Liste der von der Maschine usr
> freigegebenen Verzeichnisse oder etwas illegales.
>
> Die korrekte Regel ist in beiden Betriebssystemen: Entferne ein "/"
> am Ende, sofern er existiert, setze "/" dahinter und den Namen des
> gewuenschten Unterverzeichnisses. Fuer .bat-Dateien mit ihrem
> beschraenkten Funktionalitaetsumfang hilft diese Regel leider herzlich
> wenig.
>
> Die fuer allegro relevanten DOS-Umgebungsvariablen -D und -P enthielten
> die Pfade "korrekt" (d.h. ohne "/" am Ende, ausser bei
> Wurzelverzeichnissen von Laufwerken), die a99-cstrings P und D (und M)
> enthalten hingegen stets ein "/" am Ende. Das ist eine laestige
> Inkonsistenz, denn in der .bat-Sprache hat man keine Chance, in jeder
> Situation korrekte Pfade zu erzeugen, in der Flex-Sprache haette man die
> Konstrukte (hatte sie aber vielleicht damals nicht, als diese Abweichung
> eingefuehrt wurde). Warum der cstring W nicht auf "/" endet, ist eine
> zweite Abweichung, es ist halt schon immer so gewesen.
>
> Fazit ist, dass man Programm- und Datenverzeichnis tunlichst nie als
> Wurzelverzeichnis eines (gemappten) Laufwerks nehmen sollte, sofern
> man darauf angewiesen ist, daran Verzeichnisnamen anzuhaengen, um
> Unterverzeichnisse zu spezifizieren. Denn die hier fuer saubere
> Verarbeitung strenggenommen erforderliche Extra-Logik ist laestig und
> - - im Fall von .bat-Dateien - in der zur Verfuegung stehenden Sprache
> nicht realisierbar.
>
> viele Gruesse
> Thomas Berger
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.3-nr1 (Windows XP)
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
> iD8DBQFCxrQ7ENVh3bB0lwMRAgfTAKCZOb2M3fFHVU0MY/PBxS7yqEa6TACgu/lx
> P+l8o5I3LXQqervacq4tGM4=
> =ZCar
> -----END PGP SIGNATURE-----
>
Mehr Informationen über die Mailingliste Allegro