|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 25.05.2006, 13:28 Titel: uinteger, Uint32 und Dateizugriff |
|
|
Hallo!
Ich versuche derzeitig, die Hintergrundfarbe für ein Programm aus einer Datei auszulesen. Da SDL_FillRect keine SDL_Color, sondern ein Uint32(sprich uinteger) benötigt, hab mal mit SDL_MapRGB Schwarz und Weiß ausgeben lassen.
Ergebniss: Weiß=65535. Nun hab ich mir gedacht "Toll, das einfach in ne Datei packen", und zwar so:
Code: | SELECT CASE OPEN("Daten\optionen.pro" FOR INPUT AS #1)
CASE 0: 'Datei Konnte geoeffnet werden->Kein Problem
CASE 2:
OPEN "Daten\option.pro" FOR BINARY AS #1
WRITE #1, 0
WRITE #1, 65535
WRITE #1, 0
CASE ELSE:
PRINT "Fehler"
END SELECT
CLOSE #1
|
(Sinn der Sache: falls die Datei nicht vorhanden ist, wird sie erstellt)
Wenn ich das gemacht habe, dacht ich mir, nur noch auslesen, also so:
Code: | DIM vollbild
DIM SHARED AS Uint32 farb_1, farb_2
INPUT #1, vollbild
INPUT #1, farb_1
INPUT #1, farb_2 |
Und schon hab ich die Farben zugewiesen. Falsch gedacht: farb_1(die Hintergrundfarbe) wird 0.
Kann mir jemand sagen, wieso das so ist, und wie ichs ändern kann? |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 25.05.2006, 14:28 Titel: |
|
|
Zitat: | SELECT CASE OPEN("Daten\optionen.pro" FOR INPUT AS #1)
CASE 0: 'Datei Konnte geoeffnet werden->Kein Problem
CASE 2:
OPEN "Daten\option.pro" FOR BINARY AS #1 |
Und:
Mach die Datei zu, wenn du weisst das sie nicht existiert.
Es hat noch ein paar Probleme, seh ich mir gelich genauer an.
Edit:/
Deklarier die Variabeln korrekt:
Code: | DIM SHARED farb_1 AS Uinteger
DIM SHARED farb_2 AS Uinteger
DIM SHARED vollbild AS Uinteger |
Edit 2:
So geht es:
Code: | DIM SHARED farb_1 AS Uinteger
DIM SHARED farb_2 AS Uinteger
DIM SHARED vollbild AS Uinteger
SELECT CASE OPEN("Daten\optionen.pro" FOR INPUT AS #1)
CASE 0
? "Datei Konnte geoeffnet werden->Kein Problem"
CASE 2
? "Wird erstellt"
CLOSE #1
OPEN "Daten\optionen.pro" FOR Output AS #1
? #1, 0
? #1, 65535
? #1, 0
CASE ELSE:
PRINT "Fehler"
END SELECT
CLOSE #1
OPEN "Daten\optionen.pro" FOR INPUT AS #1
INPUT #1, vollbild
INPUT #1, farbe_1
INPUT #1, farbe_2
? vollbild
? farbe_1
? farbe_2
sleep |
_________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 25.05.2006, 15:10 Titel: |
|
|
@Michael Frey:
Die Variablen-Deklaration von Progger_X war schon korrekt..
@Progger_X:
Du hättest vielleicht noch eine Konstante/Variable für den DateiNamen benutzen
sollen, dann wäre das nicht passiert.
Ansonsten bin ich der Meinung von Michael Frey: Geöffnete Dateien nach Benutzung wieder schließen.
(Benutzung ist auch die Öffnung..)
..deshalb erspare ich es mir und euch meinen Code auch noch zu posten..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 25.05.2006, 16:43 Titel: |
|
|
Hm...also bei mir stehen auch nach deinem Code drei Nullen da...
Was mir gerade auffällt: es steht immer da, das die datei neu erstellt wird, egal, ob sie schon da ist.... |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 25.05.2006, 17:29 Titel: |
|
|
Hi,
du hast es ja nicht anders gewollt..
..und wo ist das Problem? Code: | #include "windows.bi"
#include "defines.bi"
DIM vollbild
DIM SHARED AS Uint32 farb_1, farb_2
SELECT CASE OPEN("optionen.pro" FOR INPUT AS #1)
CASE 0: 'Datei Konnte geoeffnet werden->Kein Problem
INPUT #1, vollbild
?"vollbild=";vollbild
INPUT #1, farb_1
?"farb_1=";farb_1
INPUT #1, farb_2
?"farb_2=";farb_2
CASE 2:
OPEN "optionen.pro" FOR BINARY AS #1
WRITE #1, 0
WRITE #1, 65535
WRITE #1, 0
?"Zum Lesen nochmal laufen lassen.."
CASE ELSE:
PRINT "Fehler"
END SELECT
CLOSE #1
Sleep | ..läuft bei mir einwandfrei..
(natürlich erst nach dem 2.Aufruf..)
Nörgelig, wie ich nun mal bin, habe ich beide Male DIESELBE
Datei benutzt, ich wollte keinen Dialog schreiben..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 25.05.2006, 18:53 Titel: |
|
|
Komisch..
Mein veränderter Code:
Code: | DIM vollbild
DIM SHARED farb_1 AS Uint32
DIM SHARED farb_2 AS Uint32
SELECT CASE OPEN("Daten/optionen.pro" FOR INPUT AS #1)
CASE 0:
PRINT "Vorhanden"
INPUT #1, vollbild
INPUT #1, farb_1
INPUT #1, farb_2
PRINT vollbild
PRINT farb_1
PRINT farb_2
CASE 2:
CLOSE #1
PRINT "Dateierstellung"
OPEN "Daten/option.pro" FOR BINARY AS #1
WRITE #1, 0: vollbild=0
WRITE #1, 65535: farb_1=65535
WRITE #1, 0: farb_2=65535
CASE ELSE:
PRINT "Fehler"
END SELECT
CLOSE #1 |
Es kommt JEDES mal Dateierstellung, egal, ob die Datei da ist, oder nicht.(ich habe auch nachgeschaut, sie wird ordnungsgemäß erstellt). Kann mir bitte jemand sagen, woran das liegt? |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 25.05.2006, 19:22 Titel: |
|
|
Halt deine Nase fest, es könnte sonst weh tun, wenn ich dich mit selbiger drauf stoße:
Progger_X hat Folgendes geschrieben: | SELECT CASE OPEN("Daten/optionen.pro" FOR INPUT AS #1) | und Progger_X hat Folgendes geschrieben: | OPEN "Daten/option.pro" FOR BINARY AS #1 | Ich hoffe, du verstehst jetzt, was ich weiter oben damit gemeint habe,
daß es sinnvoller ist, für Dateinamen Variablen zu benutzen
[Edit]
Michael Frey hat das weiter oben auch sehr schön farblich gekennzeichnet..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 25.05.2006, 22:10 Titel: |
|
|
So was dummes
Danke, endlich hab ichs verstanden! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.05.2006, 22:13 Titel: |
|
|
Ich verwend meistens keine variablen für dateinamen, aber ich KOPIERE sie in der ide - dadruch kann man auch verhindern, dass einer davon falsch ist _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 25.05.2006, 22:40 Titel: |
|
|
Progger_X hat Folgendes geschrieben: | Danke, endlich hab ichs verstanden! | hihihi, danke, selten so gelacht
Du hattest deine Chance, Cowboy, seit Michael Frey's Posting..
..aber wir hauen ja nicht immer gleich mit dem Vorschlaghammer
@jojo:
..und ich find Variablen für DateiNamen doch besser: Code ist einfacher zu warten..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|