Dateien auslesen
Übersicht
BlitzBasic
Allgemein
Mr HoppBetreff: Dateien auslesen |
Antworten mit Zitat |
|
|---|---|---|
|
Hallo,
Ich habe ein Programm geplant, in dem man Lieder komponieren kann und diese dann abspeichern und abspielen kann. Nun weiß jeder, der von Notenschrift was versteht, das extrem viele Informationen untergebracht werden, also Notenhöhe, Länge, Lautstärke, Tempo. Und das klingt jetzt zwar wenig, aber so etwas umzusetzen scheint schwieriger zu sein, als ich dachte. Naja, auf jeden Fall dachte ich, man könnte alle Informationen in einer txt-Datei unterbringen, aber da müsste man in jede Zeile eine Information schreiben und diese dann mit ReadLine abrufen, da bin ich mir aber nicht sicher, wie sich so viele Zeilen auf den Speicherplatz auswirken. Außerdem kommt hinzu, das die Lieder mehrstimmig sein sollen. Soll ich doch lieber für jede Infogruppe (Notenhöhe, Länge, Lautstärke, Tempo) eine eigene txt-Datei anlegen? Kompilizierte Angelegenheit Edit: Ach nee, jetz' hab' ich's! Ich nehme pro Stimme eine txt-Datei, in der dann pro Zeile ein Ton mit seinen Infos ausgelesen wird. Mfg Mr Hopp |
||
|
|
Mr.Keks |
Antworten mit Zitat |
|---|---|---|
| das sind gar keine informationen im vergleich zu denen, die bei echten tönen wie wave anfallen... allerdings solltest du lieber etwas optimierter speichern. mit writebyte/short/int, wenns möglich ist. | ||
| MrKeks.net | ||
|
|
BtbN |
Antworten mit Zitat |
|---|---|---|
|
Ich würde dir auch empfhelen, nicht eine ganze Zeile voll zu klatschen!
Schreib einfach mit WriteByte immer was neues Hintendrann. |
||
Mr Hopp |
Antworten mit Zitat |
|
|---|---|---|
|
Ja, ich hatte jetzt geplant das das ganze etwa so aussieht
Zitat: 00030
00230 00430 00530 00720 Wie aber kann ich eine einzelne Zahl auslesen? Und wie soll ich das mit Int machen? |
||
|
|
Ctuchik |
Antworten mit Zitat |
|---|---|---|
|
http://www.blitzbasic.com/bpdo...ile/Stream
Man beachte die Befehle WriteByte, WriteShort, WriteInt, sowie ReadByte, ReadShort und ReadInt! |
||
|
Zu den Nebenwirkungen gehören trockener Mund, Übelkeit, Erbrechen, Harnstau, schmerzhafter rektaler Juckreiz, Halluzinationen, Demenz, Psychose, Koma, Tod und Mundgeruch!
Magie eignet sich nicht für alle! Fraget euren Arzt oder Apotheker! |
||
|
|
Kernle 32DLL |
Antworten mit Zitat |
|---|---|---|
|
Mr Hopp hat Folgendes geschrieben: Ja, ich hatte jetzt geplant das das ganze etwa so aussieht
Zitat: 00030
00230 00430 00530 00720 Wie aber kann ich eine einzelne Zahl auslesen? Und wie soll ich das mit Int machen? An sowas hatte ich auch schonmal gedacht. Zwar nicht im hinblick auf Noten, aber doch schon was mit Musik. Hatte daran gedacht, das man so Instrumente hat, und in der textdatei steht wann das Instrument spielen soll. Also 1 = Ja 0 = Nein.Habe ich nie ausprobiert, aber in der Theorie müsste es klappen. |
||
|
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog] Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89 Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009 |
||
Mr Hopp |
Antworten mit Zitat |
|
|---|---|---|
| Naja, bei mir sollte die erste Zahl die Oktave sein, die Zweite zusammen mit der dritten die Tonhöhe, die vierte die Länge und die fünfte die Lautstärke | ||
|
|
Artemis |
Antworten mit Zitat |
|---|---|---|
|
Nun dann guck dir noch mal genau
Byte (http://www.blitzbase.de/tabellen/datentypen.htm) ql:WriteByte und ql:ReadByte an. Dann kannst du es sogar in drei (oder zwei??) bytes zusammen fassen, da ja keine deiner daten die 128 überschreitet oder?? |
||
Mr Hopp |
Antworten mit Zitat |
|
|---|---|---|
| Also wie jetzt? Blöd bin ich ja nicht (oder vielleicht doch?) das habe ich auch schon ausprobiert, allerdings mit Byte-Lesen aus einer txt.Datei. Also man kann diese Befehle nur für Integer Zahlen benutzen(.dat)? Sollte ich also eine kilometerlange Zahl erstellen, oder etliche kurze? Oder klappt es doch mit .txt? | ||
|
|
D2006Administrator |
Antworten mit Zitat |
|---|---|---|
|
Hi,
erstmal ist es völlig egal ob das eine *.txt Datei ist oder ein *.dat. Hat keinen Einfluss auf die Art der Speicherung, diese bestimmst nämlich du mit der Art der Programmierung. Ich würde dir genauso wie alle andere empfehlen, das ganze per WriteByte/Short zu lösen. Wenn du also diese 5 Zahlen hast, liest du sie der Reihe nach von links aus (oder schreibst sie halt von links rein). Dabei ist zu beachten, wie groß die Zahlen werden können. Werden sie nie größer als 255 und nie negativ, so kannst du für alle Zahlen Write/Readbyte nehmen. Auch für die 2-stellige Zahl die du hast. Demnach wären es ja dann nur noch 4 Werte. Was halt eventuell als Nachteil bezeichnet werden kann, ist die Tatsache, dass wenn du per WriteByte zB eine 4 in eine Datei speicherst und diese mit dem Texteditor öffnest, so wirst du keine 4 sehen. Denn das was du siehst sind ASCII Zeichen. Und die Nummer für das ASCII Zeichen "4" ist nicht gleich ne normale 4. Des weiteren entfallen die Zeilenumbrüche, so dass du die Datei nicht mehr mit dem Texteditor lesen bzw. bearbeiten kannst. Deswegen solltest du dir auch gleich einen kleinen eigenen Editor schreiben. So nun ganz simples Beispiel: Wir wollen eine Datei reinladen, die schon für einen Ton alle 4 Werte abgespeichert hat. Wir öffnen einfach die Datei mit ql:Readfile. Danach lesen wir mit ql:ReadByte die 4 Informationen aus und speichern sie in geeigneten Variablen. Du musst also 4 mal ReadByte anwenden. Noch Fragen soweit? MfG D2006 |
||
Mr Hopp |
Antworten mit Zitat |
|
|---|---|---|
|
Ok, dann vielen Dank, ich hab's ausprobiert und jetz' kann's losgehen! |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
