Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 03.01.2011, 17:54 Titel: Programm läuft nicht wegen 16bittiefe? [gelöst] |
|
|
Hallo Ich hoffe ihr könnt mir helfen.
Ich habe ein Programm geschrieben, dass unter anderem Bilder per Bload anzeigt.
Da die Bilder transparenz besitzen sollten habe ich per folgende Befehle
Code: | ScreenRes 1024,768,16,,&h10 Or &h20 |
und
Code: | buffer = ImageCreate(1024,768,&h00FF00FF) |
den Bildern transparenz zugeteilt. Wenn ich das ganze bei meinem Vista PC laufen lasse klappt alles wunderbar. Die Bilder werden mit ihrer transparenz angezeigt. Wenn ich es jedoch auf meinem anderen XP Rechner ausprobiere startet sich das Programm und läuft aber ich sehe nichts. Überhaupt nichts.
Mittlerweile habe ich herausgefunden, dass wenn ich aus der Zeile:
ScreenRes 1024,768,16,,&h10 Or &h20
die Bittiefe rausnehme, also: ScreenRes 1024,768,,,&h10 Or &h20
funktioniert das Programm plötzlich auf dem XP Rechner. Aber die Transparenz ist dann natürlich futsch.
Wo liegt das Problem?
Ich hoffe auf schnelle Antwort. Dankeschön
Zuletzt bearbeitet von T1m0 am 07.01.2011, 23:18, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 03.01.2011, 19:05 Titel: |
|
|
Probier mal 24 oder 32 Bit Farbtiefe  |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 03.01.2011, 19:17 Titel: |
|
|
hab es mit 24bit und 32bit probiert aber dasselbe Resultat. Man kann nichts sehen.
Das das Programm läuft beweist aber das ich eine Messagebox eingebaut hab, die auch auftaucht. Aber alles andere fehlt.
Wenn ich das Programm unter Kompatiblität win98 laufen lasse geht das Programm aber da geht die Transparenz nicht. Habs eben einem Kumpel geschickt der auch Windows XP besitzt und bei ihm geht das Programm. Woran kann das liegen? Fehlt vielleicht irgendwas im Windows von dem PC? Dankeschön |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 03.01.2011, 19:55 Titel: |
|
|
Haenge mal bei
Code: | ScreenRes 1024,768,16,,&h10 Or &h20
|
noch ein Or &h40 dran und bei
Code: | buffer = ImageCreate(1024,768,&h00FF00FF)
|
noch eine ,16. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 03.01.2011, 20:30 Titel: |
|
|
Meinst du nicht eher folgendes?
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 03.01.2011, 20:41 Titel: |
|
|
Westbeam hat Folgendes geschrieben: |
Meinst du nicht eher folgendes?
|
Die führenden Nullen sollten Wurst sein oder ist 012 eine andere Zahl als 12?
Die führenden Nullen dürfen und werden auch in der Mathematik einfach gestrichen, Compiler machen es nicht anders. _________________ 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 |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 03.01.2011, 20:51 Titel: |
|
|
Danke für die schnellen Antworten!
Code: | Haenge mal bei
Code:
ScreenRes 1024,768,16,,&h10 Or &h20
noch ein Or &h40 dran und bei
Code:
buffer = ImageCreate(1024,768,&h00FF00FF)
noch eine ,16. |
hat leider nicht geklappt. Es wird weiterhin nichts angezeigt.
folgendes funktioniert:
Code: | ScreenRes 1024,768,16,,8 |
Sobald ich aber &h10 oder &h40 dazuhänge geht es nicht mehr. |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 03.01.2011, 21:31 Titel: |
|
|
Zitat: | Sobald ich aber &h10 oder &h40 dazuhänge geht es nicht mehr. |
koennte es sein, das noch was geht, aber nichts angezeigt wird, da alles durchsichtig ist?
Wie fiel Bit hat den das Bild?
Zitat: | Achten Sie beim Laden von Bildern darauf, dass diese die gleiche Farbtiefe aufweisen wie der gewählte Bildschirmmodus (siehe SCREEN). Laden Sie beispielsweise kein 24-Bit-BMP in einen SCREEN mit Farbtiefe 4 Bit.
|
Koennte es sein das es nicht richtig geladen wird?
probier mal
Code: | Dim Buffer As Any Ptr
Dim Fehler As Integer
ScreenRes 1024,768,16,,&h10 Or &h20
Buffer = ImageCreate(1024,768,&hFF00FF,16)
Fehler = BLoad("Test.bmp",Buffer)
Put(0,0),Buffer
Print Fehler
Sleep
ImageDestroy(Buffer)
End |
wenn fehler = 0 ist, wurde das Bild erfolgreich geladen. |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 03.01.2011, 22:17 Titel: |
|
|
Hi, Danke für den Lösungsansatz
Wenn ich das Programm mit
Code: | ScreenRes 1024,768,16,,8 |
starte dann klappt es. 0 wird angezeigt.
Wenn ich es aber mit
Code: | ScreenRes 1024,768,16,,&h10 Or &h20 |
ausführe, kann ich kein 0 ablesen weil ich absolut nichts sehe. Auch kein Print usw. obwohl das Programm läuft.
Das einzige was ich in diesem Zustand darstellen kann ist eine Messagebox.
Ich kann mir echt nicht erklären warum.. Ich hoffe ihr könnt mir weiterhelfen |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 03.01.2011, 22:43 Titel: |
|
|
Nur mal geraten: probiere bei PUT doch mal ein Aktionswort (PSET oder vielleicht auch TRANS). Ohne Aktionswort hatte ich nicht immer das vermutete Ergebnis. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 03.01.2011, 22:52 Titel: |
|
|
Hier mal was zum testen
Code: | #Include "windows.bi"
Dim Buffer As Any Ptr
Dim Text As String
Dim Fehler As Integer
Dim Depht As Integer
Declare Function FehlerNummer(ByVal Nummer As Integer) As String
ScreenRes 1024,768,16,,&h10 Or &h20
Buffer = ImageCreate(1024,768,&hFF00FF)
Fehler = BLoad("Test.bmp",Buffer)
Put(0,0),Buffer,PSet
Text = "Laden des Bildes: " + FehlerNummer(Fehler) + Chr(13,10)
Text += "Buffer adresse: "& Str(Buffer) + Chr(13,10)
Text += "Screen adresse: "& Str(screenptr) + Chr(13,10)
ScreenInfo(,,Depht)
Text += "Screen Farbtiefe: "& Str(Depht) + Chr(13,10)
ImageInfo(Buffer,,,Depht)
Text += "Image Farbtiefe: "& Str(Depht*8) + Chr(13,10)
messagebox(0,Text,"INFO",MB_ICONINFORMATION Or MB_OK)
ImageDestroy(Buffer)
End
Function FehlerNummer(ByVal Nummer As Integer) As String
Select Case Nummer
Case 0
Return "kein Fehler"
Case 1
Return "ungültiger Funktionsaufruf"
Case 2
Return "Datei nicht gefunden"
Case 3
Return "Datei-Ein-/Ausgabe-Fehler"
Case 4
Return "Zuwenig Speicher"
Case 5
Return "ungültiges RESUME"
Case 6
Return "Array-Indexüberschreitung"
Case 7
Return "NULL-Pointerzugriff"
Case 8
Return "fehlende Berechtigungen"
Case 9
Return "Unterbrechung"
Case 10
Return "ungültige Anweisung"
Case 11
Return "Gleitkommafehler"
Case 12
Return "Speicherzugriffsfehler"
Case 13
Return "Beendigungsanforderung "
Case 14
Return "unnormale Beendigung"
Case 15
Return "Anfragesignal beendet"
Case 16
Return "Return ohne Gosub"
Case 17
Return "Dateiende"
End Select
End Function |
Moegliche fehlerquellen werden in der messagebox aufgelistet |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 03.01.2011, 23:25 Titel: |
|
|
Hi. Danke für die Tipps.
Leider hat PSET sowies TRANS auch nicht geholfen.
Das Programm von XOR hab ich jetzt mal laufen lassen und es verblüfft mich..
Seht selbst:
Uploaded with ImageShack.us
Das Bild wird gefunden und geladen. Alles funktioniert laut Messagebox wunderbar jedoch wird nichts angezeigt. Kein bild. Es ist nicht "völlig" Transparent. Ich habe zum Test einen großen schwarzen Balken reingemalt aber man sieht leider auch bei diesem Test wieder gar nichts.
Woran kann das liegen, dass Windows diese Bilder (oder Text à la PRINT) in diesem Modus einfach nicht anzeigen will?
Witzig zu sagen ist auch, dass wenn ich oben das fehler.exe Fenster offen habe ich nichts anklicken kann außer oben die Taskleiste. Das heißt das Bild ist offen und ich kann unter diese "schicht" nicht klicken. Aber ich kann eben das Bild einfach nicht sehen. |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 05.01.2011, 17:02 Titel: |
|
|
Jetzt hab ich das ganze nochmal mit einer anderen IDE ausführen wollen und folgendes kam dabei raus:
Ich bin echt ratlos..
Ich hoffe ihr könnt mir sagen was das zu bedeuten hat.
gruß T1m0 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 06.01.2011, 13:19 Titel: |
|
|
Stell deinem Code mal folgendes voran:
Code: | SetEnviron("fbgfx=GDI") |
Wenns dann nett klappt ist was im Argen. |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 07.01.2011, 21:15 Titel: |
|
|
Ich danke euch für eure Vorschläge.
Leider hat das alles nichts gebracht.
Ich werde mal die Treiber neu installieren bis bald |
|
Nach oben |
|
 |
T1m0

Anmeldungsdatum: 24.05.2008 Beiträge: 19
|
Verfasst am: 07.01.2011, 23:19 Titel: |
|
|
Das Problem ist erledigt.
Ich habe das Programm auf deinem RemotePC per VNC ausgeführt. Aber beim VNC Host war das "Alpha-Blending" deaktiviert, somit konnte die Transparenz anscheinend nicht angezeigt werden oder führte zu Fehlern.
Ich bin froh das das Problem beseitigt ist und ich möchte euch allen Danken für eure Hilfe  |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 08.01.2011, 01:44 Titel: |
|
|
Ähm das ist ohne Worte. Windows ist nicht für VNC gedacht und wenns dann nicht läuft wärs gut das da zu sagen  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.01.2011, 13:55 Titel: |
|
|
28398 hat Folgendes geschrieben: | Windows ist nicht für VNC gedacht |
Windows ist genau so wenig/viel für VNC "gedacht" wie für jegliche andere Drittanbieter-Software. Allerdings ist es schon recht... eigen, Grafikprogrammierung über VNC zu betreiben. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|