ich möchte ein C-programme schreiben das das MS-dos befehl nachbildet
ich habe noch probleme mit main modul
kann jemand mir helfen?
ich möchte ein C-programme schreiben das das MS-dos befehl
nachbildet
ich habe noch probleme mit main modul
kann jemand mir helfen?
Hallo!
Ich kenne 2 Lösungen:
* einfach unschön:
Mit system(„dir“); das Verzeichnis auf dem Bildschirm holen. Das wirst du aber wahrscheinlich nicht brauchen können und desshalb brauchst du system(„dir >> hallo.txt“); damit der Text in hallo.txt liegt!
* schön schwierig:
#include
#include
#include
void main()
{
struct ffblk eintrag;
REGS inreg, outreg;
SREGS sreg;
char suchname[13]="???.???";
int resultat, disktranf_seg, disktransf_ofs, i;
char c;
//Alte Disktransfer Adresse sichern
inreg.h.ah = 0x2f;
intdosx (&inreg, &outregk, &sreg);
disktransf_seg = sreg.es;
disktransf_ofs = outreg.x.bx;
//Disktransfer Adresse setzen
inreg.h.ah = 0x1a;
sreg.ds = FP_SEG(&eintrag);
inreg.x.dx = FP_OFF(&eintrag);
intdosx (&inreg, &outreg, &sreg);
inreg.h.ah = 0x4e;
inreg.x.cx = 0x3f;
sreg.ds = FP_SEG(&suchname);
inreg.x.dx = FP_OFF(&suchname);
intdosx(&inreg, &outreg, &sreg);
resultat = outreg.h.al;
while (!resultat)
{
i=0;
while (c=eintrag.ff_name[i++])
putchar©;
while (i++>5) & 0x0f,
((eintrag.ff_fdate>>9) & 0xf7)+1980,
(eintrag.ff_ftime>>11) &0x1f,
(eintrag.ff_ftime>>5)&0x3f,
(eintrag.ff_ftime & 0x1f)*2);
inreg.h.ah = 0x4f;
intdos (&inreg, &outreg);
resultat = outreg.h.al;
}
//Disktransfer Adresse rücksetzen
inreg.h.ah = 0x1a;
sreg.ds = disktransf_seg;
inreg.x.dx = disktransf_ofs;
intdosx (&inreg, &outreg, &sreg);
} //b125d, ADIM, C++ - Band 50, 5. Auflage, S.136
Diese Methode greift direkt über Interrupts zu! Heikle Sache aber die besste Möglichkeit! Dieser Sourcecode geht auf alle Fälle mit BC++ 3.1 für DOS.
Servus, Stefan Huber!