' Demonstration Datei abschneiden ' $INCLUDE: 'qb.bi' DIM dosIntEin AS RegTypeX, dosIntAus AS RegTypeX DIM dnam AS STRING * 300 INPUT "Name einer zu erstellenden Testdatei"; d$ ' Datei mit 200'000 Bytes anlegen OPEN d$ FOR OUTPUT AS 1 FOR i% = 1 TO 200 PRINT #1, SPACE$(1000); NEXT i% CLOSE 1 ' Gr”sse abfragen OPEN d$ FOR INPUT AS 1 PRINT "Gr”sse nach Erstellung:"; LOF(1) CLOSE 1 ' Nun abschneiden ' Zuerst ”ffnen (entspricht OPEN) ' Siehe http://www.ctyme.com/intr/rb-2779.htm dnam = d$ + CHR$(0) dosIntEin.ax = &H3D02 dosIntEin.ds = VARSEG(dnam) dosIntEin.dx = VARPTR(dnam) CALL interruptx(&H21, dosIntEin, dosIntAus) IF dosIntAus.flags AND 1 THEN PRINT "Fehler beim ™ffnen:"; dosIntAus.ax END END IF handl% = dosIntAus.ax ' dann positionieren (entspricht SEEK) ' Siehe http://www.ctyme.com/intr/rb-2799.htm dosIntEin.ax = &H4200 dosIntEin.bx = handl% ' Verkrzung auf 150'000 Bytes dosIntEin.cx = CINT(150000 \ 65536) dosIntEin.dx = CINT(150000 AND 65535) CALL interruptx(&H21, dosIntEin, dosIntAus) IF dosIntAus.flags AND 1 THEN PRINT "Fehler beim Positionieren:"; dosIntAus.ax ELSE ' und 0 Bytes schreiben ' Siehe http://www.ctyme.com/intr/rb-2791.htm dosIntEin.ax = &H4000 dosIntEin.bx = handl% dosIntEin.cx = 0 ' der "Trick": 0 Bytes schreiben! dosIntEin.ds = VARSEG(dnam) dosIntEin.dx = VARPTR(dnam) CALL interruptx(&H21, dosIntEin, dosIntAus) IF dosIntAus.flags AND 1 THEN PRINT "Fehler beim Schreiben:"; dosIntAus.ax END IF END IF ' Datei schliessen ' Siehe http://www.ctyme.com/intr/rb-2782.htm dosIntEin.ax = &H3E00 dosIntEin.bx = handl% CALL interruptx(&H21, dosIntEin, dosIntAus) IF dosIntAus.flags AND 1 THEN PRINT "Fehler beim Schliessen:"; dosIntAus.ax END END IF ' Neue Gr”sse abfragen OPEN d$ FOR INPUT AS 1 PRINT "Neue Gr”sse:"; LOF(1) CLOSE 1