Datenbank-Programmierung mit Turbo-BASIC XL
von Soeren » Sa 20. Okt 2018, 14:35Hallo,
zuerst wünsche ich heute allen Beteiligten und dem Club eine erfolgreiche JHV.
An die, die mitlesen, ich habe weniger eine Frage, sondern würde gerne einen Erfahrungsaustausch in Sachen Daten auf Diskette speichern mit Turbo-Basic starten. In den letzten Wochen habe ich mich intensiver damit beschäftigt, welche Funktionen dafür geeignet sind
Ganz klassisch kann man eine Datei mit OPEN #1,8,0,"D:TEST.DAT" zum schreiben öffnen. Doch wie speichert man effektiv Daten dort ab? Wenn man normale Zahlenvariablen nimmt, dann kostet das pro Eintrag 6 Byte. Sparsamer ist es Daten als String abzuspeichern. Aber nicht mit PRINT #1,STRING$ sondern mit PRINT #1;STRING$. Den Fehler hab ich zuerst gemacht. Allerdings sollte man folgendes beachten, man kann beliebig lange Strings mit dem PRINT-Befehl speichern, aber nicht mit INPUT einlesen. Dort gibt es eine Längenbegrenzung von 255 (oder 256?) Bytes.
Ein weiterer Punkt ist wichtig, Strings werden im RAM und auf Diskette als Zeichenkette gespeichert. Aber im RAM wird die Länge des Strings abgelegt, auf der Diskette wird ein String mit dem End of Line=Return-Zeichen beendet - CHR$(155). Und das kann ein Problem sein. Wenn man Daten als 8Bit-Zeichen auf Diskette ablegen will, dann ist die 155 tabu. D.h. man müsste in der Vor- und Nachbearbeitung in Turbo-Basic das Zeichen ersetzen, oder nur 7 Bit-Charakters abspeichern (womit 1/8 an Speicher verloren geht).
Man kann sich auch überlegen, ob man mit BGET und BPUT die Daten direkt in einen RAM-Speicherbereich schreibt, und schaut, wie man diese weiter verarbeitet, habe damit aber keine weitere Erfahrung.
Ich schreibe gerade an einem Turbo-Basic Programm, was automatisch die Namen und Sektorenanzahl auf einer Diskette liest und in eine Datenbank separat ablegt und Suchanfragen starten kann. Dabei habe ich wieder einiges gelernt. Wer ähnliche Erfahrungen gesammelt hat, darf sie gerne hier teilen.
Gruss
Sören
zuerst wünsche ich heute allen Beteiligten und dem Club eine erfolgreiche JHV.
An die, die mitlesen, ich habe weniger eine Frage, sondern würde gerne einen Erfahrungsaustausch in Sachen Daten auf Diskette speichern mit Turbo-Basic starten. In den letzten Wochen habe ich mich intensiver damit beschäftigt, welche Funktionen dafür geeignet sind
Ganz klassisch kann man eine Datei mit OPEN #1,8,0,"D:TEST.DAT" zum schreiben öffnen. Doch wie speichert man effektiv Daten dort ab? Wenn man normale Zahlenvariablen nimmt, dann kostet das pro Eintrag 6 Byte. Sparsamer ist es Daten als String abzuspeichern. Aber nicht mit PRINT #1,STRING$ sondern mit PRINT #1;STRING$. Den Fehler hab ich zuerst gemacht. Allerdings sollte man folgendes beachten, man kann beliebig lange Strings mit dem PRINT-Befehl speichern, aber nicht mit INPUT einlesen. Dort gibt es eine Längenbegrenzung von 255 (oder 256?) Bytes.
Ein weiterer Punkt ist wichtig, Strings werden im RAM und auf Diskette als Zeichenkette gespeichert. Aber im RAM wird die Länge des Strings abgelegt, auf der Diskette wird ein String mit dem End of Line=Return-Zeichen beendet - CHR$(155). Und das kann ein Problem sein. Wenn man Daten als 8Bit-Zeichen auf Diskette ablegen will, dann ist die 155 tabu. D.h. man müsste in der Vor- und Nachbearbeitung in Turbo-Basic das Zeichen ersetzen, oder nur 7 Bit-Charakters abspeichern (womit 1/8 an Speicher verloren geht).
Man kann sich auch überlegen, ob man mit BGET und BPUT die Daten direkt in einen RAM-Speicherbereich schreibt, und schaut, wie man diese weiter verarbeitet, habe damit aber keine weitere Erfahrung.
Ich schreibe gerade an einem Turbo-Basic Programm, was automatisch die Namen und Sektorenanzahl auf einer Diskette liest und in eine Datenbank separat ablegt und Suchanfragen starten kann. Dabei habe ich wieder einiges gelernt. Wer ähnliche Erfahrungen gesammelt hat, darf sie gerne hier teilen.
Gruss
Sören