far Probem mit .NET Visal 7.0 C++
-
Hallo Zusammen .NET (7.0) erkennt far nicht.
Wer kann mir dazu weiterhelfen. Ich möchte nicht mehr mit einem stream
eine Druckerausgabe tätigen, sonderen mit inp, outp.
Wie kann die far Anweisung mit .NET C++ 7.0 korrekt anwenden für DOS Programme?Ebenfalls versuchte ich erfolglos die Help Einstellungen von .Net Compiler umzusetzen.
Win32 unterscheidet nicht zwischen near- und far-Adressen. Da die Datentypen NEAR und FAR in WINDEF.H definiert sind, werden sie automatisch von der Includedatei verarbeitet und als leere Zeichenfolgen für Win32 neu definiert. NEAR und FAR werden daher nicht berücksichtigt. Wenn Sie WINDEF.H nicht einschließen, ersetzen Sie die Schlüsselwörter mit Hilfe der /D-Befehlszeilenoption durch leere Zeichenfolgen. Beispiel:/D_near= /D_far= /D__near= /D__far=
D_far= und D__far= wird als Fehler bzw. nicht gültige Variable angegeben.
Mit der Einbindung von WINDEF.H
erscheinen drei Fehler in WinNT.h:c:\Programme\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinNT.h(3364): error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'ContextRecord'
c:\Programme\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinNT.h(3364): error C2501: '_EXCEPTION_POINTERS::ContextRecord' : Fehlende Speicherklasse oder Typspezifizierer
c:\Programme\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinNT.h(3364): error C2501: '_EXCEPTION_POINTERS::PCONTEXT' : Fehlende Speicherklasse oder Typspezifizierertypedef struct _EXCEPTION_POINTERS {
PEXCEPTION_RECORD ExceptionRecord;
PCONTEXT ContextRecord;
} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
typedef PVOID PACCESS_TOKEN;
typedef PVOID PSECURITY_DESCRIPTOR;
typedef PVOID PSID;[cpp]
#ifndef _Drucker
#define _Drucker
#include<stdio.h>
#include<conio.h>// Borland #include<dos.h>int inp(unsigned port);
void outp(unsigned port,int byte);int printParallel (char ch[])
{
FILE *stream;
stream=fopen("LPT1","w");
int n=0;
while (n<1)
{
fprintf(stream,ch);
n++;
}
fclose(stream);
return 1;
}int printRS (char ch[])
{
FILE *stream;
stream=fopen("COM1","w");
int n=0;
while (n<1)
{
fprintf(stream,ch);
n++;
}
fclose(stream);
return 1;
}/*
funktioniert mit 7.0 nicht mehr mit far
*/
int printchar( int c)
{
//Fuer Druckerausgabe mit einem Zeichen
unsigned port = *(unsigned far
0x00000778L; //Einstellungen PC
unsigned long time = 0xFFFFF;
outp( port, c & 0xFF);
++port;
while ( ! (inp( port) & 0x80))
if ( --time == 0)
return 0;
++port;
outp( port, 0xD);
outp( port, 0xC);
return 1;
}#endif
-
Albert007 schrieb:
Wie kann die far Anweisung mit .NET C++ 7.0 korrekt anwenden für DOS Programme?
Gar nicht. Mit dos ist nix mehr. Unter windows ist die Hardware geschützt, du kannst so nimmer zugreifen, soviel ich weiß. Für Assembly gilt das selbe.
Das es inp und outp noch in den headern gibt wusste ich gar nicht. *g*@einen Moderator: Vielleicht sollte man dazu einen Faq-Eintrag machen, um klarzustellen, das assembler und andere low-level Zugriffe unter win nicht mehr machbar sind. Da kommen imho recht oft fragen dazu.
-
Dieser Thread wurde von Moderator/in CMatt aus dem Forum C# und .NET in das Forum MFC mit dem Visual C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.