| 
				
					|  | 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, 12: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, 13: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, 14: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
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  |  
		| Nach oben |  |  
		|  |  
		| Progger_X Mr. Lagg
 
 
 Anmeldungsdatum: 24.11.2004
 Beiträge: 784
 Wohnort: Leipzig
 
 | 
			
				|  Verfasst am: 25.05.2006, 15: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, 16:29    Titel: |   |  
				| 
 |  
				| Hi, du hast es ja nicht anders gewollt..
 ..und wo ist das Problem?
 ..läuft bei mir einwandfrei.. 	  | 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
 | 
 (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
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  |  
		| Nach oben |  |  
		|  |  
		| Progger_X Mr. Lagg
 
 
 Anmeldungsdatum: 24.11.2004
 Beiträge: 784
 Wohnort: Leipzig
 
 | 
			
				|  Verfasst am: 25.05.2006, 17: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, 18:22    Titel: |   |  
				| 
 |  
				| Halt deine Nase fest, es könnte sonst weh tun, wenn ich dich mit selbiger drauf stoße: 
 und 	  | Progger_X hat Folgendes geschrieben: |  	  | SELECT CASE OPEN("Daten/optionen.pro" FOR INPUT AS #1) | 
 Ich hoffe, du verstehst jetzt, was ich weiter oben damit gemeint habe, 	  | Progger_X hat Folgendes geschrieben: |  	  | OPEN "Daten/option.pro" FOR BINARY AS #1 | 
 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
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  |  
		| Nach oben |  |  
		|  |  
		| Progger_X Mr. Lagg
 
 
 Anmeldungsdatum: 24.11.2004
 Beiträge: 784
 Wohnort: Leipzig
 
 | 
			
				|  Verfasst am: 25.05.2006, 21: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, 21: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, 21:40    Titel: |   |  
				| 
 |  
				| hihihi, danke, selten so gelacht 	  | Progger_X hat Folgendes geschrieben: |  	  | Danke, endlich hab ichs verstanden! | 
   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
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  |  
		| 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.
 
 |  |