@GetFileTitle bring unterschiedliche Ergebnisse ?



@GetFileTitle bring unterschiedliche Ergebnisse ?

Mario P., 05.04.2008 17:55: Hallo,
habe eben in einem meiner Prog's feststellen müssen, das
@GetFileTitle(@Addr(BMP_Pfad$), @Addr(BMP_D$), @Len(BMP_D$))
unter verschiedenen XP-Installationen verschiedene Werte zurück liefert
(andere WIN's hab ich noch nicht getestet), und zwar mal mit Erweiterung
und mal ohne. So heist z.B. eine Bilddatei mal "profan" und mal "profan.bmp".
Kann es an versch. API-Versionen liegen ??
Suche mal den Quelltext raus, dauert nur 'nen Moment...
Aber vieleicht hat schon jemand 'ne Idee.
Mario
So, hier isser:

CLS
Def @GetFileTitle(3) !"COMDLG32.DLL", "GetFileTitleA"
Declare BMP_Pfad$, BMP_D$
BMP_Pfad$ = @LoadFile$("BITMAP EINBINDEN","*.BMP")
Print "Komplett : "+BMP_Pfad$
BMP_D$ = @Space$(255)
@GetFileTitle(@Addr(BMP_Pfad$), @Addr(BMP_D$), @Len(BMP_D$))
BMP_D$ = @Trim$(BMP_D$)+".bmp"
BMP_Pfad$ = @Translate$(BMP_Pfad$,BMP_D$,"")
Print "Pfad : "+BMP_Pfad$
Print "Datei : "+BMP_D$
waitinput
end


David Strutz, 05.04.2008 18:01: 

[offtopic]
Ich mach das so


proc LASTSUBSTR
   PARAMETERS S$,D$
   RETURN (SUBSTR$(S$,LEN(S$,D$),D$))
endproc
proc GETFNAME
   PARAMETERS S$
   RETURN LASTSUBSTR(S$,"\\")
endproc
proc GETFTITLE
   PARAMETERS S$
   RETURN SUBSTR$(GETFNAME(S$),1,".")
endproc

also so

lastsubstr(string s,d){return (substr$(s,len(s,d),d))}
getfname(string s){return lastsubstr(s,"\\")}
getftitle(string s){return substr$(getfname(s),1,".")}
[/offtopic]


Mario P., 05.04.2008 18:28: Muss ich doch gleich mal probieren...


Mario P., 05.04.2008 18:41: @IF: Danke. Klappt ja bestens, auch ohne API.
Wenn man sowas eben nur alle halbes Jahr mal braucht, schaut man in die Hilfe und nimmt das, was angeboten wird (manchmal grasiert eben die Denkfaulheit)
Können die unterschiedlichen Rückgaben bei der API ( -Version) liegen ??
Mario


Jörg Sellmeyer, 05.04.2008 18:46: Man kann es auch so machen:


Proc DateiName
   Parameters Datei$
   Return FindFirst$(Datei$)
EndProc
Print DateiName($SysPath + "\\Shell32.dll")
WaitInput
Oder so für ältere Versionen, wenn man die SubStr$-Variante bevorzugt:

Def CharCount(2) Int(Sub(Len(@$(1)),Len(translate$(@$(1),@$(2),""))))
Def VerzeichnisTiefe(1) Int(Sub(Len(@$(1)),Len(Translate$(@$(1),"\\",""))))
Def PfadTeil(2) SubStr$(@$(1),@%(2),"\\")
'Vorher sollte man die Verzeichnistiefe ermitteln
Def DateiName(1) SubStr$(@$(1),Add(VerzeichnisTiefe(@$(1)),1),"\\")
Def DateiPfad(1) Translate$(@$(1),Add$("\\",DateiName(@$(1))),"")


David Strutz, 05.04.2008 18:48: Jörgs Variante scheint mir effizienter!


Sebastian S., 05.04.2008 20:27: Hi,
  Zitat von "Mario Patzlaff": „Können die unterschiedlichen Rückgaben bei der API ( -Version) liegen ??
nein, das hängt von der Option "Erweiterungen bei bekannten Dateitypen ausblenden" ab (siehe im Explorer unter Extras > Ordneroptionen > Ansicht).
Gruss, Sebastian


Dies ist die Offlinevariante vom Thread [@GetFileTitle bring unterschiedliche Ergebnisse ?].

Valid CSS!

©2006 XProfan.Com