|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
scorpio
Anmeldungsdatum: 15.03.2006 Beiträge: 1
|
Verfasst am: 15.03.2006, 16:00 Titel: problem mit tilde in dateinamen |
|
|
hallo,
ich schreibe gerade ein kleines programm, das aus einer playlist (m3u) alle dateinamen ausliest und es soll dann am ende die gesamtgröße der in der playlist enthaltenen files ausgeben.
theoretisch kein problem, doch ich habe dabei nicht bedacht, dass die dateinamen in der playlist im windows format sind, für das programm brauche ich die aber eben in der "dos-schreibweise", also mit tilde und so.
wie kann ich das problem lösen, also aus dem string mit dem dateinamen unter windows einen string mit dos-dateinamen machen??
gibt es bei der verkürzung mit der tilde unter dos irgendeine gesetzmäßigkeit, die man sich zunutze machen kann?
mfg |
|
Nach oben |
|
|
Michael Frey
Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
|
Thomas Antoni
Anmeldungsdatum: 12.10.2004 Beiträge: 220 Wohnort: Erlangen
|
Verfasst am: 17.03.2006, 20:19 Titel: |
|
|
Sazu habe ich mir für die QB-MonsterFAQ Folgendes vorgemerkt:
Answer 8
~~~~~~~~~~~~~~~
[ by /\lipha ( aliphax@hotmail.com - www.geocities.com/aliphax ]
*** Question
How to convert long filenames to 8.3 filenames?
*** Answer
Converting long filenames -> short (8.3) filenames under Windows
QBasic v4.5+ users, remember to load the /L switch on the command line.
Code: |
DECLARE FUNCTION GetShortName$ (filename$)
'
'GetShortName$() returns the full pathname in short (8.3)
'file format for a given long filename (with an absolute
'or relative path from the current directory).
'
'Windows must be running for this routine to work
'
'If the file does not exist, then "" is returned
'
'Relative paths that access subdirectories -for
'instance, you are in e:\qbasic\ and wish
'to access e:\qbasic\temp\oldprogram.txt -then make
'sure that you include a period:
'
'a$ = GetShortName$(".\temp\oldprogram.txt")
'
'If you have other DATA in the program, place
'this data before the other data and
'call GetShortName$ at the beginning of the program
'to load the data so it won't interfere with the rest
'of the data
'
'a$ = GetShortName$("")
'
'
CLS
INPUT "Enter in filename: "; long$
PRINT "<"; GetShortName$(long$); ">"
END
'
'
DATA 55 : 'PUSH BP
DATA 89,E5 : 'MOV BP,SP
DATA 1E : 'PUSH DS
DATA C5,76,06 : 'LDS SI,[BP+06] ;get longname param
DATA C4,7E,0A : 'LES DI,[BP+0A] ;get shortname buffer
DATA B8,60,71 : 'MOV AX,7160 ;func to call
DATA B9,01,00 : 'MOV CX,0001 ;?? heh
DATA CD,21 : 'INT 21 ;makes call
DATA 1F : 'POP DS
DATA 5D : 'POP BP
DATA CA,08,00 : 'RETF 0008
'
FUNCTION GetShortName$ (filename$)
STATIC loaded%, asm$
'
IF NOT loaded% THEN 'first time through read asm data
loaded% = -1
FOR i% = 1 TO 23
READ byte$
asm$ = asm$ + CHR$(VAL("&H" + byte$))
NEXT i%
END IF
'
IF filename$ = "" THEN EXIT FUNCTION
'
original$ = filename$ + CHR$(0) 'null-terminate the string
origSeg% = VARSEG(original$)
origOff% = SADD(original$)
buffer$ = CHR$(0) + SPACE$(128) 'create buffer
bufSeg% = VARSEG(buffer$)
bufOff% = SADD(buffer$)
DEF SEG = VARSEG(asm$)
CALL ABSOLUTE(BYVAL bufSeg%, BYVAL bufOff%, BYVAL origSeg%, BYVAL origOff%, SADD(asm$))
DEF SEG
'
'filename ends with a null (CHR$(0)). Find it and return
'characters up to it
GetShortName$ = LEFT$(buffer$, INSTR(buffer$, CHR$(0)) - 1)
END FUNCTION
|
_________________ +++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++ |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|