Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241151 (2587)
  Suchen
 Zurück zur Übersicht
 AutorThema: Probleme mit @ShortName$
Michael Weber
Datum:31.05.02 23:12 Antwortenals Email verschicken (m.weber@arcor.de) 


Wer kann mir helfen
Um mit MCI einen kleinen MP3 Player zu schreiben brauche ich die kuzen Dateinamen. Leider gibt mir die Funktion ShortName nur einen (wahrscheinlich) Leerstring oder "1" zurück.Liegt das an Profan 7.5 oder an mir?

im Programm steht
kurz$ = @ShortName$(Datei$)

und

print kurz$

gibt nichts oder die 1 aus


Gerhard Putschalka
Datum:01.06.02 08:31 Antwortenals Email verschicken (g.putschalka@utanet.at) 


Hallo Michael,
bei mir, mit Win98 und Profan 6.6, funktioniert es richtig. Bist Du sicher, daß der lange Dateiname inkl. Pfad korrekt ist? Drucke auch den langen Dateinamen aus ob der richtig ist.
Wichtig ist, wenn Du den Dateinamen als String-KONSTANTE definierst, einen Backslash (\) immer doppelt anzugeben.
Mfg
Gerhard.


Michael Weber
Datum:01.06.02 11:09 Antwortenals Email verschicken (m.weber@arcor.de) 


Der lange Dateiname muss richtig geschrieben sein, weil die Variable Datei$ mit findfirst bzw findnext gefüllt wird. Andererseits gibt es denn eine methode den backslash dann zu verdoppeln. Mir fällt dazu nur SubStr ein.In Borland C++ brauchte ich den backslash nur in einen slash umzuwandeln. Dann hatte es auch funktioniert.
Hier ist der Quelltext. Der ist zwar sehr Chaotisch, aber vieleicht findet jemand den Fehler
'------- Quellcode -------
'Hier werden die langen Dateinamen gesucht
proc search
parameters Pfad$
declare i%

CLEAR i%
List$ i% = @findfirst$(Pfad$)

Whilenot %IORESULT
INC i%
List$ i% = @findnext$()
endwhile

maxtitel% = @sub(i%,1)

endproc
'und hier werden sie ausgewertet
if @getfocus(next%)
'stopmp3
INC titel%
if @GT(titel%,maxtitel%)
titel% = 0
endif
let Datei$ = @List$(titel%)
' Das mit den Anführungszeichen habe ich in einem älteren beitrag gelesen
let kurz$ = @CHR$(34) + @ShortName$(Datei$) + @CHR$(34)
rank$ = @str$(@add(titel%,1)) + "> " + kurz$

@setfocus(%HWnd)

whileloop 1,maxdisp%
ShowLCD 60,@add(@mul(@sub(&LOOP,1),b%),10),@Upper$(@mid$(Datei$,&LOOP,1))
ShowLCD 110,@add(@mul(@sub(&LOOP,1),b%),10),@Upper$(@mid$(rank$,&LOOP,1))
endwhile

endif


Frank Abbing
Datum:01.06.02 11:22 Antwortenals Email verschicken  


Hallo,

du kannst anstatt \ auch den / verwenden. Dann entfällt das lästige Verdoppeln des Backslashes.
Beides ist in Dateinamen laut MS zulässig.

Gruß, Frank


Jörg Sellmeyer
Datum:01.06.02 11:40 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Michael,
Dein Fehler ist in der While-Schleife:
Whilenot %IORESULT
INC i%
List$ i% = @findnext$()
endwhile
Du erhöhst i% vor dem ersten füllen. Die Zählung von List fängt aber bei 0 an.
Dadurch kann - zumindest wenn Du List$(0) abfragst - der Eintrag ungültig sein.
Gruß
Jörg


Michael Weber
Datum: 01.06.02 14:24 Antwortenals Email verschicken (m.weber@arcor.de) 


Danke für eure Hilfe!
Ich habe jetzt den Fehler gefunden.
in der search funktion wurde die maske mit pfad declariert. zurückgegeben wurde aber nur der Dateiname ohne Pfad.Ich musste das Programm nur veranlassen in dieses Verzeichnis zu wechseln bzw Pfad+Dateiname an ShortName zu übergeben

Blödheit muss halt bestraft werden

nochmals Danke an alle


 Zurück zur Übersicht