Hi
Ich habe mir ein kleines Programm fuer DOS geschrieben, dass DPMI-Funktionen benutzt, somit also im Protected Mode laeuft.
Dieses Programm gibt Musikdateien ueber eine SoundBlaster16 kompatible Soundkarte wieder.
Unter Windows funktioniert das ganze auch ganz hervorragend, aber wenn ich versuche, das ganze nur unter DOS zu starten, gibt EMM386 die Fehlermeldung "DMA-Modus wird nicht unterstuetz. Enter druecken, um den PC neu zu starten." aus. (Natuerlich passiert nichts, wenn man auf enter drueckt, was haette man von MS anderes erwartet ;))
Also: hae??
Wie kommt diese Fehlermeldung zustande? Der DMA-Controller unterstuetzt den verwendeten DMA-Modus mit 100%iger Sicherheit und der DMA-Puffer ist auch nicht zu gross...
Ich habe irgendwie den Verdacht, dass EMM386 nicht ganz damit klar kommt, wie ich den DMA-Puffer allociert habe...
Und zwar habe ich im Realmode ueber int 21,ah=48h einen Speicherbereich reserviert und dieses Segment dann im Protected Mode ueber die DPMI-Funktion 0002h in einen Descriptor umgewandelt.
Vielleicht ueberschreitet dieser Speicherberich auch irgendwelche 64KB-Grenzen?
Was kann ich gegen diese EMM386-Anfaelle tun?
hi, also versuchs mal so:
1. im dateimenu gehst du auf neu (register dateien)
2. wähle resourcenskript aus
3. im menü wo auch dateien und klassenangezeigt werden, gehst du auf resourcen, dort sollte jetzt was stehen...doppelklick und schon kannst du ein symbol malen.
4. jetzt der quellcode:
wndclass.hIcon = LoadIcon (hInstance,MAKEINTRESOURCE (IDI_ICON)) ;
case WM_CREATE :
hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
du solltest dann die resource.h einbinden (#include"resource.h")
ich hoffe, es war verständlich :-)!!
gruss math55
Automatisches Schließen der Konsole verhindern? Hab ich schonmal gehört - vielleicht in der FAQ?
Für die Übersetzung nach Java kann ich dir nicht helfen, aber ich glaub mal soviel anders wird es nicht aussehen.
MfG SideWinder
ANSI ist der amerikanische Standard, aber es gibt einen Standard der ISO.
Bei C++ muss man das .h generell bei allen Standard Headern weglassen. Bei den Headern die zur kompatibilität mit C in der C++ Std.-Lib vorhanden sind, muss man vorher noch ein c anfügen, anstelle stdio.h also cstdio.
willste das programm das das das andere Programm ausführt selber schreiben oder nicht,...
fertiges Programm gibt es genug, z.B. remotetoolz (netbus oder sonst was,... subseven soger mit passswort)
schau dir mal sprintf, snprintf und stringstreams an
und am besten auch mal in die ISO C und ISO C++ FAQ
[ Dieser Beitrag wurde am 26.07.2002 um 11:21 Uhr von kingruedi editiert. ]
1. kein goto
2. du willst einen String in eine int-Variable speichern?
3. Stringvergleich kann man mit strcmp durchführen. Wie es in C++ aussieht weiss ich nicht.
4. Weißt du schon was Funktionen sind? Wenn ja, benutz sie lieber.
ansonsten würde ich des mal auf die schnelle so machen:
#include <iostream>
#include <cstring>
using namespace std;
int Ausgabe ( int Person ) {
switch ( Person ) {
case 1:
cout << "\nName: Dominik\n";
cout << "Straße: weg 1\n";
cout << "Telefon#: 554545454\n";
cout << "Wohnort: Sasbach\n";
cout << "e-mail: @vde\n";
cout << "ICQ#: 545641514\n";
cout << "Handy#: 4546545644\n";
break;
case 2:
cout << "\nName: sepp\n";
cout << "Straße: weg 3\n";
cout << "Telefon#: 44544545\n";
cout << "Wohnort: Sasbach\n";
cout << "e-mail: @de\n";
cout << "ICQ#: 465465655\n";
cout << "Handy#: 547654684\n";
break;
default:
cout <<"\nDieser Name ist nicht in der Liste.\n";
}
return 0;
}
int main ( void ) {
char szName[101];
int nPerson;
char cNochmal;
do {
cout <<"Bitte geben sie einen Vornamen ein: ";
cin >> szName;
if ( !strcmp(szName,"Dominik") )
nPerson = 1;
else if ( !strcmp(szName,"Klaus") )
nPerson = 2;
else
nPerson = 0;
Ausgabe(nPerson);
cout << endl << endl << "Nochmal, bitte bitte (j/n) ";
cin >> cNochmal;
if ( cNochmal == 'n' || cNochmal == 'N' )
return 0;
}while ( 1 );
return 0;
}