Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Wie 640*480 Farbinformationen unter Dos speichern?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.06.2003, 19:50 Uhr
~Crazy-X
Gast


Hi,

Ich hatte euch ja schonmal mit der Frage gequält wie ich ein Array mit 640*480 shorts unter echtem DOS speichern kann. Aber da bin ich auch nicht ans Ziel gekommen.

Generelle Frage:
Ist es unter DOS moeglich 640*480 Farbinf. (short Variablen) irgendwie (d.h. 1 zusammenhängender Speicherblock / mehrere Blöcke; eindimensional bla[x * maxX + y] / zweidimensional bla[x][y] ...) zu speichern??

Klar wäre es möglich 2 Arrays zu machen (bla[640][220] & bla2[640][220]). Aber ich wollte die Pixel schon über 640/480 ansprechen.

Ich hab' ja schon mehrere Möglichkeiten recherchiert. Aber die bringen mich alle nicht zum Ziel:

Compiler: Borland C++ 5.01

1.
C++:
unsigned short screen[640][480]


Funktioniert nicht (Compiler: Array Size too large) - klar - wegen der 64Kb Arraygrenze bei DOS. (Deshalb die vorherige Frage wegen far -> gleich mehr...)

2.
C++:
unsigned short far *screen;screen = (unsigned short far *) farmalloc( 640 * 480 * sizeof(unsigned short));


Das habe ich jetzt mit "Target Model: Large" zum Kompilieren bekommen. Aber die Indizes sind mal wieder nicht eindeutig! Wenn ich ein Element einen Wert zuweise, bekommen gleich mehrere "Elemente" den Wert zugewiesen!

3.
C++:
screen = (unsigned short**) new ( unsigned short*[640]);   for (x = 0; x < 640; x++)       screen[x] = (unsigned short*) new (unsigned short[480]);


Dieser Code funktioniert unter Windows einwandfrei! Wenn ich es aber für DOS kompilieren will Error: Fatal: (1,1):32-bit record encountered in module test3.cpp.
Hab' ich da evtl. noch eine Chance??

4.
C++:
unsigned short **screen;screen = (unsigned short**) malloc(640*sizeof(unsigned short*));for(int j=0;j<640;j++)    screen[j] = (unsigned short*) malloc(480*sizeof(unsigned short));


(Also Bsp. 3 einfach mit C realisiert). Funktioniert auch nicht: Erstmal muss ich beim Wert-zuweisen die Indizes vertauschen und zweitens sind sie wieder nicht eindeutig!!!

Sollte eine der Methoden normalerweise funktionieren kann ich euch nochmal genau beschreiben was damit bei mir nicht funktioniert.

Oder gibt's noch eine Methode die garantiert funktionieren sollte?

Vielen Dank im vorraus!
©®azy-X
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.06.2003, 11:19 Uhr
virtual
Sexiest Bit alive
(Operator)


far, near und die ganzen anderen Dingen, die mit Speichermodellen zusammenhängen, haben nichts mit ANSI C zu tun. Ich verschieb dich mal ins Allgemeine Forum, weil das auch nichts mit Windows (mehr) zu tun hat.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.06.2003, 12:34 Uhr
~Crazy-X
Gast


Hi,

@virtual: Sorry hatte ich nicht bedacht!!

Aber das Problem hat sich sowieso erledigt! Mir hat jemand den Tip gegeben das unsigned short 2 Byte belegt anstatt wie ich gedacht hatte ein Byte.

Bei 640 * 480 * 2 = 600Kb und bei 640Kb Gesamt Verfügbarer Speicher unter DOS sieht ein blinder dass das nicht funktionieren kann...

Mit unsigned char hab' ich das jetzt hinbekommen!

CU
©®azy-X
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.06.2003, 14:45 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat:
Bei 640 * 480 * 2 = 600Kb und bei 640Kb Gesamt Verfügbarer Speicher unter DOS sieht ein blinder dass das nicht funktionieren kann...
Dabei vergisst Du allerdings, das die Grafikkarte ihren eigenen Speicher hat, der als Bildschirmspeicher dient. Und vor Erfindung des AGP-Ports war das ja die Regel, weil auch eine 320 * 200 *4 Grafik 256kB benötigt, und damit bekommt man 512 KB Arbeitsspeicher auch schon Probleme...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: