....oder aber ganz "hardcore" mit char-array und dann schleife über alle elemente und jedes mit vordefinierten vergleichen.....
willkommen in der steinzeit
gruß
ethereal
n'abend!!!
du hast lediglich vergessen die "conio.h" mit einzubinden!!
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
cout<<"\aHallo"<<endl;
clrscr();
}
[edit]nein, stop, halt!!! alles falsch, bei dev-c++ ist es die "conio.c"!!!!!!
die "conio.h" funzt nämlich irgendwie nich richtig!!![/edit]
Juhu! Es klappt!
Ich habe mein Microsoft Visual Studio 6.0 nochmal installiert und es klappt alles ohne Probleme, danke für den Tipp, an eine Neuinstallation hätte ich warscheinlich nicht gedacht!
Hi,
ich habe das Programm mit dem Debugger bearbeitet.
In dieser for-Schleife vermute ich den Fehler:
for(i = 0; i <= 16; i++)
{
ascii = fgetc(ei_kan);
fprintf(stdprn, "%4c", ascii);
}
Beim ersten Schleifendurchlauf erhält die Variable ascii den Wert 10 (Zeile ascii = fgetc(ei_kan)). Erst beim zweiten Durchlauf wird der richtige Wert 32 eingelesen.
Wenn ich die vom Programm erzeugte Datei in einem Text-Editor öffne kann ich keine fehlerhafte Speicherung finden.
Woher kommt der Wert 10 für ascii?
Bei der Bildschirmausgabe passiert dasselbe. Es hat auf dem Bildschirm warscheinlich keine Auswirkung bei der Ausgabe der Zeichen.
Vielen Dank für Eure Hilfe.
und wenn dus ohne windowsapi machen willst, bist ja gerade im konsolenforum, dann schau ins konsolenfaq oder mach es so
int main(){
unsigned char chr;
do
{
chr=getch();
printf("%i",chr);
if ((chr==224) || (chr==0))
{
chr=getch();
printf("%i",chr);
switch(chr)
{
case 13:
printf("go");
break;
case 75:
printf("<-");
break;
case 77:
printf("->");
break;
case 83:
printf("ENTF");
break;
case 82:
printf("EINF");
break;
case 80:
printf("pfeil nach unten");
break;
case 79:
printf("ENDE");
break;
case 72:
printf("pfeil nach oben");
break;
}
}
}while(true);
return 0;
}
Oder du willst mal ein kleines Spiel programmierung wie z.b.: snake, da brauchst du kbhit um zu überprüfen ob er überhaupt was gedrückt hat, bei getch würde er dann ewig lang auf einen Tastendruck warten! Oder du willst doch mit Super Mario auch währendem Springen nach links oder rechts gehen können sonst würde er ja nur gerade in die luft springen, so was kann man auch damit machen!
ne, ich benutze vmware um eine dos-umgebung (6.22) zu emulieren. blöderweise geht das schlecht und ich hab auch keine zufriedenstellende performance & sound.
Ich habe den 'Fehler' gefunden, nachdem ich einfach mal das Ergebniss von SetUART überprft habe, da habe ich festgestellt das der Modus gar nicht gesetzt wurde, Win XP ist das wohl egal nur Win98 reagiert da etwas allergisch drauf.
Ein Blick in die MSDN offenbarte folgendes: in der DCB-Struktur muss das Feld StopBits auf 0 gesetzt werden, wenn ich mit 1 Stopbit arbeiten möchte, 1 steht nämlich für 1.5 Stopbits und 2 für 2 Stopbits.
So dann will ich doch mal schauen was ich mit dem neuen Wissen so alles anfangen kann!
Hallo,
habe erst jetzt gesehen, dass noch Beiträge kamen.
Also, laut msdn soll int25h durch int21h Fn 440Dh
minor code 41h ersetzt werden, na ja.
Wahrscheinlich ist die Sektoradressierung einfacher
in assembler durchzuführen. Das folgende Beispiel
zeigt, dass es auch eingeschränkt mit C geht:
Benutzter Compiler: Pacific-C-Compiler (Freeware)
Warnung: Fehler können zu Datenverlust auf der Festplatte
führen!
/* Pacific */
/* liest Bootsektor 01 der HD und speichert in "bs01.dat" */
#include <dos.h>
#include <stdio.h>
void main(void)
{
union REGS regs;
FILE* file;
char buffer[512];
int i;
regs.h.ah = 0x02; /* Read */
regs.h.al = 0x01; /* Anzahl zu lesende Sektoren */
regs.h.ch = 0x00; /* low byte Cylindernummer (0-255) */
regs.h.cl = 0x01; /* Sektornummer (1-63), bit 6+7: hi 2bits Cylinder */
regs.h.dh = 0x00; /* Headnummer (0-255) */
regs.h.dl = 0x80; /* Drivenummer */
regs.x.bx = FP_OFF(buffer); /* Adressenoffset in bx */
int86(0x13, ®s, ®s); /* Int 13h aufrufen */
file = fopen("bs01.dat","wb"); /* binär schreiben */
for(i = 0; i < 512; i++)
{
putc(buffer[i], file);
}
fclose(file);
printf("Sektor 01 in Datei <bs01.dat> geschrieben.\n");
}
Tip: bei eigenen Experimenten Test-Festplatte verwenden.
MfG
pacc99
Bashar schrieb:
Ist schon wieder erster April? '@' ist Ascii 64, schon immer gewesen.
Krass - deswegen finde ich es nirgends unter den Sondercodes
MfG SideWinder
besserer Betreff wäre gut.
Falls du schon einen Anfang hast, poste den mal.
"Der ´"verschlüsselte" text soll dann zu kopieren sein und z.B in einen Texteditor einkopiert werden?"
geht zumindest unter win. automatisch.
ansonsten, zB Zeichen einlesen, Zeichen+1, Zeichen ausgeben.
Falls erst der ganze Text eingelesen werden soll:
string einlesen, einzelne zeichen darin durchgehen und jeweils +1.
Falls du nicht nur a->b, b->c, c->d machen willst sondern frei zuordnen, würde ich das so machen:
ein string, umgefähr so:
"a:g-b:f-c:w" usw
vor dem : steht das zu ersetzende Zeichen, dann das neue Zeichen, ein Trennstrich usw. Den String muss man dann eben parsen. (durcharbeiten)
ggf. kann man die : und - auch weglassen, aber das programm kann sie als 'Orientierung' benutzen, so dass man zB 'a' auch durch 'dfg' ersetzen kann.