Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241099 (2535)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Probleme mit @ShortName$
Michael Weber
| Datum:31.05.02 23:12 (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 (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 (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 |
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 (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 (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