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