You are not logged in.

1

Friday, August 27th 2010, 10:12pm

Bild anzeigen

Hallo!

Ich programmiere zur Zeit einfach vor mich hin und da ich nicht VC(++) verwende (n möchte) habe ich mich gefragt wie ich mittels einer einfachen IDE (wie bsp DEV C++) oder nur mit einem Compiller ein Bild darstellen kann. Funktioniert das mit der CMD\Eingabeaufforderung? -> also mit einem Code der dann dort ausgeführt wird.

ich würde mich über Antworten segr freuen! Danke Johannes

This post has been edited 1 times, last edit by "Johannes" (Aug 28th 2010, 7:51pm)


2

Friday, August 27th 2010, 10:33pm

Verstehe ich das richtig? Ein richtiges bild in cmd?

Geht nicht!

Entweder ASCII Art oder du machst dir mit gdi ein dialog und benutzt bitmaps

3

Saturday, August 28th 2010, 1:20pm

ok und funktioniert dass dann auch ohne framework(s)?
( Das mit der CMD meinte ich in etwa so dass sich ein Fenster öffnet in dem nur das Bild befindlich ist XD. Naja egal.)

könntest du \oder jemand anderes mir das erläutern?

4

Saturday, August 28th 2010, 2:51pm

Warum dann überhaupt CMD, ist unlogisch, mach einfach ne GUI

5

Saturday, August 28th 2010, 7:44pm

ok GUI

dann mache ich das mit VC! Danke

This post has been edited 1 times, last edit by "Johannes" (Aug 28th 2010, 7:52pm)


6

Sunday, August 29th 2010, 7:53pm

Die aktuelle Betriebssystem lassen ja nur noch eingeschränkt hardwarenahe Zugriffe zu.

Hab das aktuell nicht getestet.
Und dem Videomodus 13 und unter 16bit könnte die Graphikdarstellung noch möglich sein.
Unter 32bit wird der Speicher schon anders verwaltet. Ob da heute eine 16bit Emulation noch immer funktioniert?

Der aktuelle Compiler, Version Watcom 1.9, kann 16bit als Zielsystem nicht mehr - vielleicht kommt ihr ja noch an einen 1.4.

Hab noch ein paar Graphikspielereien gefunden, die liefen noch unter W2k. Keine Ahnung womit ich die damals kompiliert habe. C oder C++ klar; aber welcher?

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
*   File: MANDEL.C
*
*        Mandelbrot set generator.
*        Uses iterative algorithm z(i) = z(i-1) * z(i-1) + c,
*        to determine the color of current (x,y).
*
*             DO NOT try to compile this using WCL386 !
*                Use "WCL -3" or Borland/C++ instead.
*
*                (c) Lenik Terenin, 1995
*/
    #include <stdio.h>
    #include <conio.h>
//    #include
 
    #define LIMIT 100        // Increase LIMIT to get more exact picture
 
    #ifdef __BORLANDC__
        void SetVmode( short mode )
        {
            asm {
                mov        ax, [mode]
                push        bp
                int        10h
                pop        bp
            }
        }
 
        #define PutPixel13(x,y,c) pokeb( 0xA000, (x) + (y) * 320, (c))
    #else
        #ifdef __386__
            #error Can't run in 32-bit mode, sorry...
        #endif
 
        void SetVmode(short);
        #pragma aux SetVmode =        \
            "push        bp"        \
            "int        10h"        \
            "pop        bp"        \
        parm [ax]
 
        void PutPixel13( short x, short y, short c);
        #pragma aux PutPixel13 = \
            "push ax"        \
            "mov ax, 0a000h"        \
            "mov es, ax"\
            "pop ax"        \
            "shl bx,6"        \
            "add di,bx"        \
            "shl bx,2"        \
            "add di,bx"        \
            "stosb"        \
        parm [di] [bx] [ax] modify [es] nomemory
    #endif
 
    int main()
    {
        int i, j, k;
        double z_i, z_r, c_i, c_r, tmp;
        double module;
 
        SetVmode( 0x13 );
 
        for( i=-160; i<160; i++) {
            c_i = ((double) i) / 100.0;
            for( j=-160; j<40; j++) {
                c_r = ((double) j) / 80.0;
                z_i = z_r = 0.0;
                for( k=0; k<LIMIT; k++) {
                    tmp = z_r * z_r - z_i * z_i;
 
                    z_i = 2 * z_r * z_i + c_i;      // z = z * z + c
                    z_r = tmp                + c_r;
 
                    module = z_r * z_r + z_i * z_i; // is |z| large enough?
                    if( module > 1.0E16 ) break;
                }
                if( k<LIMIT) {
                    PutPixel13( i+160, j+160, (k/15)*2+20);
                }
                else PutPixel13( i+160, j+160, 16);
            }
            if( kbhit() ) break;
        }
 
        getch();        
        SetVmode(3);
 
        return 0;
    }


Ist schon ein paar Jahre her, es kann sein das der Quelltext nach bearbeitet werden muss.
Unter Borland wird ausser dem BCC der TASM benötigt :!:
Watcom damals Version 1.4 oder 1.6?

MfG bcc-fan

This post has been edited 2 times, last edit by "bcc-fan" (Aug 29th 2010, 8:19pm)


7

Monday, August 30th 2010, 12:50pm

hmm der Compiller spuckt da schon ein paar Fehler aus. Naja gut unter Vista XD. (Noch Vista bis ich wieder flüssig bin XD)

8

Monday, August 30th 2010, 9:57pm

Ich denke das sich neuere Windowsversionen und Compiler von den von mir gezeigten Spielereien entfernen.

Die Quelltexte beruhen auf Besonderheiten bei der Adressierung des Speichers der alten CPUs, wie 8080 oder 8086 u.s.w..

Bill Gates ( ? ) und/oder andere Mitstreiter gingen zu Beginn seiner Laufbahn davon aus das ein MB Speicher locker für so einen PC genügen würde :D

Grob skizziert der Speicheraufbau damals 10 Blöcke mit je 64kB mehr oder weniger freier Speicher. Der 11te Block für Grafik. Der 16.Block für Kopien des Bios.
Die Blöcke 12 bis 15 wurden manchmal mit "Klimmzügen" dem freien Speicher oder auch teilweise der Grafik zugeteilt. Es gab zu Beginn sogar Rechner unter DOS die noch weniger Speicher hatten. Ab der 386er CPU wurde die Speicherverwaltung aber deutlich geändert.

Dann kamen OS2 und Windows NT die verbesserte Sicherheitsmechnismen mitbrachten. Da heisst, der Endnutzer soll möglichst nicht mehr direkt auf den Speicher zugreifen können. Das soll das Betriebssystem stabilisieren, wenn z.B. eine Anwendung abstürzt.

So weit ein kurzer Abriss zur Geschichte ;)

MfG bcc-fan

This post has been edited 1 times, last edit by "bcc-fan" (Aug 31st 2010, 8:39am)


9

Tuesday, August 31st 2010, 12:12pm

und etz muss ich mal dumm fragen: kann ich es auch schaffen mit der dev Ide ein Bild anzuzeigen? 8o

10

Tuesday, August 31st 2010, 1:01pm

Der DEV ist ja eine IDE unter der der Compiler MinGW 3.4.5 meist läuft.
Meinen Informationen nach kann der MinGW nicht aus dem von mir zitierten Quelltext auf der Konsole Bilder darstellen, da er für die "alte" Speicherverwaltung nicht konzipiert ist.

Da musst du, wenn du unter Windows mit DEV so was vorhast die Windowsunterstützung, also WinAPI und darauf aufbauende Programme nutzen.

MfG bcc-fan

11

Tuesday, August 31st 2010, 8:45pm

auf gut Deutsch: Ich benutze besser VC++

12

Tuesday, August 31st 2010, 9:04pm

Die neuen VC++ helfen dir da auch nicht weiter - da müsstest du schon noch einen Oldie ausgraben.
Denke der letzte VC der das noch konnte war der 1.5 :D

Wir schreiben hier noch über Bilder direkt in den Speicher schreiben? ;)

Auch ältere Compiler von Borland, Symantec( heute: Digital Mars ), Watcom, Microsoft und andere konnten Bilder in den Speicher schreiben.
Aber nicht der MinGW, da der immer schon min 32bit ansprach.

Wenn es WinAPI werden soll, alle neueren Versionen der oben aufgezählten Compiler können das.
Aber die Dialekte die die Compiler verstehen unterscheiden sich ein wenig :huh:

MfG bcc-fan

13

Wednesday, September 1st 2010, 11:45am

ich glaube du missvetehst mich. XD

ich bin ja noch relativ/sehr neu in C++ aber nicht im Programmieren...
ich wollte mal die grenzen der IDE oder der Sprache kennen.

Ich habe da noch eine Frage:

beruhen den die Win Apis auch auf dem .net framework? Und weiß den da auch jemand n Tut oder Video oder iwas dazu?

mfg Johannes

14

Wednesday, September 1st 2010, 2:25pm

Die Grenzen IDE? Der DEV und einige andere sind/waren als Quelltext verfügbar. Wenn du Lust und Zeit hast wo sollen da die Grenzen sein?

Okay, ich nehme an du meinst so wie der DEV meisst genutzt wird, also als Programm ohne das da noch was ergänzt wird. Der DEV wird schon einige Jahre nicht mehr weiterentwickelt - das sollten Delphi-Quellen gewesen sein. Es soll bei umfangreicheren Projekten zu Problemen gekommen sein, wenn ich das richtig deute, steuerte der DEV den MinGW nicht immer richtig an.

Einige betrachten die IDE Code::Blocks als Nachfolger des DEV. Code:Block wurde mit dem MinGW übersetzt. Wenn du möchtest, darfst du den verbessern oder weiterentwickeln. Weiteres findest du auf der Seite von C::B. Man soll da alte Projekte des DEV importieren können und man kann etwa 20 Compiler mit C::B 10.5 ansteuern.

Dies nur als kleiner Abriss zu IDE und Compiler.

Die WinAPI wurde gleichzeitig mit Windows entwickelt, geistert also schon mehr als 20 Jahre durch die geneigte Programmiererwelt.
Hier ein Tutorial:
http://www.winprog.org/tutorial/

Die NET Geschichte ist deutlich jünger.

MfG bcc-fan

15

Wednesday, September 1st 2010, 10:16pm

du da du grad codeblocks ansprichst! Des macht ja ganz schön was her! Doch ich hab da n Problem! Immer wenn ich ein c++ (.cpp) compillieren will dann geht des net! Es passiert einfach garnichts!

16

Wednesday, September 8th 2010, 12:40am

Ich würde dir empfehlen, wenn du Fenster machst, statt WinAPI eher auf WFC oder gleich .NET umzusteigen. Es ist zwar immer mal ganz praktisch wenn man WinAPI noch kann, aber effektiv nutzt das kaum einer noch um selber seine Fenster damit zu erstellen, der Code wird ziemlich unübersichtlich und länglich und es ist auch viel mit viel Studieren der MSDN verbunden. Besonders als Programmiereinstieg halte ich es für ungeeignet.
Achja mit mode 13h direkt in den Grafikspeicher reinzuschreiben ist auch so Sache, die eher nur aus nostalgischen Gründen zu empfehlen ist. Damit kann man auch nicht wirklich Bilder sinnvoll darstellen, da die Auflösung und Farbtiefe stark begrenzt ist. Außerdem schaut sich niemand gerne Bilder in einer DOS-Box an :) Früher hat man das gemacht um effizient beispielsweise PC-Spiele in Fullscreen (320×200) realisieren zu können. @bcc-fan: den Kommentaren und defines nach, sollte es zumindest unter anderem mit Turbo-C++ gehen.

17

Wednesday, September 8th 2010, 9:07am

Ja sollte mit den alten Turbo C oder auch Turbo C++ laufen. Vor 15 bis 20 Jahren Turbo C + Turbo C++ = BCC

Videomode 13 wie du schon schriebst: 320x200Pixel und 256 Farben, mehr ging damals nicht ohne Klimmzüge. Damals CPU 286 ;)
Höher auflösende Videomodi gingen ab dem 386. Nur wer das highspeed nutzen wollte musste für jeden damaligen Graphikkartenchip die Software selbst optimieren.
Mit dem Interrupt die Pixel ansprechen war universeller, aber deutlich langsamer.

Borland, Inprise, Embarcadero oder wie die sich im Laufe der Zeit sonst noch nannten, hatten vor etwa 3 oder 4 Jahren noch mal Turbo-Produkte angeboten. Ob das mit diesen noch möglich ist 16bit Zielcode erstellen :?:

Das als historische Info
bcc-fan

Similar threads

Social bookmarks