Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Externe Tabellendatei aus Unterverzeichnis einbinden Kategorie: Programmierung Basic (von das |_ Team - 6.06.2016 23:20)
 Als Antwort auf Re: Externe Tabellendatei aus Unterverzeichnis einbinden von Dietmar - 2.06.2016 23:50
das |_ Team nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini M-Unit, Open-Mini Station
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

Bisherige Antworten:

Re: Externe Tabellendatei aus Unterverzeichnis einbinden (von Dietmar - 7.06.2016 1:20)
    Re: Externe Tabellendatei aus Unterverzeichnis einbinden (von das |_ Team - 8.06.2016 19:11)
        Re: Externe Tabellendatei aus Unterverzeichnis einbinden (von Dietmar - 9.06.2016 2:47)