
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Vielen Dank für den Tipp bezüglich relativer Pfadangaben! Wir haben nun Folgendes mal ausprobiert: Dieses Beispiel verwendet folgende Verzeichnisstruktur auf Laufwerk C: C:\----| |---- Test.bas \---- TABLES ----| |----Tabelle.tab \----SUB1----| |---- Test.bas \----SUB2----| |(leer) Versuch 1: Das Hauptprogramm sei 'C:\TABLES\SUB1\Test.bas'. Die Tabelle befindet sich ein Verzeichnis höher in 'C:\TABLES\' 'mit CCBASIC kompilieren DEFINE b1 byte[1] LOOKTAB Meine_Tabelle, 1, b1 PRINT b1 END '(Bitte vor der zu testenden Zeile das Semikolon entfernen) 'TABLE Meine_Tabelle "..\Tabelle.tab" 'Tabelle ist ein Verzeichnis hoeher '(Funktioniert) 'TABLE Meine_Tabelle "\..\Tabelle.tab" 'Tabelle ist ein Verzeichnis hoeher '(Funktioniert auch) 'Sogar dieses Konstrukt funktioniert: 'TABLE Meine_Tabelle "\\\\\\\\\\\\\\\\\..\\\\\\\\\\\\\\\\\\\Tabelle.tab" 'Tabelle ist ein Verzeichnis hoeher Versuch 2: Das Hauptprogramm sei jetzt 'C:\Test.bas' und die Tabelle liegt ein Verzeichnis darunter in 'C:\TABLES\' 'mit CCBASIC kompilieren DEFINE b1 byte[1] LOOKTAB Meine_Tabelle, 1, b1 PRINT b1 END '(Bitte vor der zu testenden Zeile das Semikolon entfernen) 'TABLE Meine_Tabelle "TABLES\Tabelle.tab" 'Tabelle im Verzeichnis 'C:\TABLES' '(Funktioniert) Man könnte dies auch so schreiben: 'TABLE Meine_Tabelle "TABLES\SUB1\SUB2\..\..\Tabelle.tab" 'Dieser Pfad bezieht sich noch immer auf 'die Datei 'Tabelle.tab' im Verzeichnis 'C:\TABLES' '(Funktioniert) Dies bringt uns auf eine Idee die wir weiter unten im Text beschreiben. Weitere Informationen Mit dem bevorstehenden Update unseres Projekt möchten wir die CCBASIC Tabellendateien in das Include Verzeichnis der |_ Distribution legen. Bisher schon befinden sich dort Include Dateien für den Open-Control/BASIC Kompiler (OCBASIC), den C-Control/C-Cross-Compiler (CCCCC), sowie zur komfortablen Nutzung der API bzw. ABI in der 'Lbit' Multiprogramm Firmware für C-Control I 1.1 Dafür muss aber der CCBASIC Kompiler absolute Pfadangaben für die Include-Dateien verarbeiten. Bei neueren Programmiersprachen rund um die C-Control I ist dies übrigens kein Problem. Wie aber sieht es mit CCBASIC aus? Das folgende Programm gibt Auskunft: DEFINE b1 byte[1] LOOKTAB Meine_Tabelle, 1, b1 PRINT b1 END 'TABLE Meine_Tabelle "C:\TABLES\Tabelle.tab" 'Tabelle im Verzeichnis 'C:\TABLES' 'Kompiler meldet: Zeile 40: " erwartet Anscheinend unterstützt CCBASIC wirklich keine absoluten Pfadangaben. Oder lässt sich der CCBASIC Kompiler etwa "überlisten"... ? ...damit kommen wir nun zurück auf die weiter oben angekündigte Idee: Innerhalb der Pfadangabe bedeutet ja jeweils die Zeichenfolge ..\ 'ein Verzeichnis nach oben wechseln'. Irgendwann endet das natürlich im Wurzelverzeichnis des Laufwerks. Und weil es von dort aus nicht weiter nach oben geht müssten doch eigentlich all Alle weiteren \.. ignoriert werden. (Anmerkung für Newbies: In der Informatik scheint die 'Wurzel' im Verzeichnisbaum tatsächlich oben zu liegen. (Jetzt stellt euch das mal übertragen auf die Botanik vor...) Wenn wir nun quasi auf Verdacht ausreichend häufig den Pfad nach oben wechseln, können wir dann nicht davon ausgehen uns im Wurzelverzeichnis zu befinden und nun den gewünschten absoluten Pfad (ohne den Laufwerksbuchstaben) nach unten aufbauen? Das müsste doch funktionieren. Oder etwa nicht? Versuch 3: Das probieren wir gleich mal aus! TABLE Meine_Tabelle "..\..\..\..\..\..\..\..\..\..\..\..\TABLES\Tabelle.tab" 'Kompiler meldet: Zeile 67: Datei nicht gefunden C:\..\..\..\..\..\..\..\..\..\..\..\..\TABLES\Tabelle.tab Hmm... Schade. Auch das funktioniert leider so nicht. Was könnten wir noch versuchen? das |_ Team Passender Link: |
| Antwort schreiben |