In article "reading strings" (on 13.01.97), Tim Hutzler@1:119/88 says:
Hello Tim !!
> SUB ReadString (str AS STRING)
>
> ASM LDS BX,str
> ASM MOV AX,[BX]
A little example for dynamic and fixed length strings.
From the XMAS package (Magic XMAS):
'*************************************************************************
'
' OPEN95.BAS ffnen von Dateien mit Long File Names mit PowerBASIC 3.2
'
' - die Datei wird wenn nicht vorhanden erstellt und
' wieder geschlossen
' - es wird ein DOS 8.3 konformer Dateiname zur weiteren
' Nutzung unter PowerBASIC zurckgeliefert.
'
' entwickelt von Thomas Gohel FidoNet : Thomas Gohel@2:2410/330.1
' Version: 1.00 InterNet: author@pbsound.snafu.de
' Stand : 16.11.1996 Homepage: http://www.snafu.de/~pbsound/
'
'*************************************************************************
DECLARE FUNCTION GetStrLoc (BYVAL INTEGER) AS INTEGER
CLS
PRINT
PRINT "Creating File 'Open95.Demo' ..."
OPEN Win95Open$("Open95.Demo") FOR OUTPUT AS #1
PRINT #1, "Long File Routines for Win95 by Thomas Gohel "
CLOSE #1
FUNCTION Dos83Pfad$(BYVAL DirLFN$) public
DIM LFNBuffer AS STRING * 128
DirLFN$ = DirLFN$ + CHR$(0)
! push ds
! lea di, LFNBuffer$
! push ds ; ES:DI auf Stack, erspart auer-
! push di ; das leidige Umkopieren
! les di, DirLFN$ ; Handle von DirLFN$ holen
! push di ; auf Stack
! call GetStrLoc ; Adresse holen
! mov ds, dx ; Quelle auf DS:SI umkopieren
! mov si, ax ;
! pop di ; ES:DI umkopiert vom Stack holen
! pop es ;
! mov ax, &h7160 ; Make DOS 8.3 Names
! mov ch, 0
! mov cl, 1
! int &h21
! pop ds
i% = INSTR(1, LFNBuffer$, CHR$(0))
Dos83Pfad$ = LEFT$(LFNBuffer$, i%-1)
END FUNCTION
FUNCTION Win95Open$(BYVAL Filename$)
Filename$ = Filename$ + CHR$(0)
! push ds
! les di, Filename$ ; Handle von Filename$ holen
! push di ; auf Stack
! call GetStrLoc ; Adresse holen
! mov ds, dx ; Quelle auf DS:SI umkopieren
! mov si, ax ;
! mov ax, &h716C
! mov bx, &h0002
! mov cx, &h0000
! mov dx, &h0012
! mov di, 1
! int &h21
! pop ds
! mov bx, ax ; und File wieder schliessen
! mov ah, &h3E
! int &h21
Win95Open$ = Dos83Pfad$(Filename$)
END FUNCTION
'************************************************************************
Regards,
----------------
/
/ h o m a s
email : author@pbsound.snafu.de
www : http://www.snafu.de/~pbsound/ (PowerBASIC's Home in Germany)
Cooming soon: PowerBASIC.GER
--- CrossPoint v3.11 R
2:2410/330.1)
---------------
* Origin: PBSOUND, PBFILES (20MB), PBFAQ, PBRULES, PBHIVGA at:
|