[ milan_sr @ 15.10.2010. 05:17 ] @
Kako proveriti koja je ekstenzija nekog fajla koi otvaram preko OpenDialog-u. Konkretno radi se o slici pa tako da filter je podesen na oni fajlovi koji bi trebalo da budu...al mene zanima tacna ekstenzija fajla koji je odaberen? Mislio sam da upotrebim for ciklus i da pretrazim "put"(da kaezemo da je neki string upitanju) do fajla i da provereim sve karaktere posle zadnje tacke al ne znam koju bibljoteku koristi funkcija LastChar() i dali je to dobro resenje? Radim u BCB.... Hvala
[ X Files @ 15.10.2010. 06:14 ] @
Pogledaj VCL Help: ExtractFileExt
Treba ukljuciti i: SysUtils.hpp

Primeti da funkcija vraca i tačku. Takodje ne zaboravi "case-sensitivity" pa će možda pri upoređivanju trebati recimo i UpperCase( ExtractFileExt ( ... ) ).

[ milan_sr @ 15.10.2010. 07:25 ] @
Hvalati XFiles kao mnogo puta do sada :) A koja bibljoteka treba za LastChar() cim sam pito vec pa da znam :)
[ X Files @ 15.10.2010. 09:28 ] @
Nisam ni znao da postoji ta funkcija.

Poslednju pojavu nekog karaktera mozes proveriti i sa: StrRScan
[ kiklop74 @ 01.11.2010. 16:16 ] @
Uvek je lepo koristiti ono sto dolazi uz default framework bilo kog radnog okruzenja, ali moj stav je da treba ici na kod koji je u neku ruku portabilniji.

C RTL kod CodeGear/Embarcadero/Borland i MSVC nudi funkcije _splitpath/_wsplitpath koje rade upravo to:

http://msdn.microsoft.com/en-us/library/e737s6tf%28VS.80%29.aspx

Code:

#include <stdlib.h>
#include <iostream>

const char* path = "nekifajl.ext";
char drive[_MAX_DRIVE] = {0};
char dir  [_MAX_DIR  ] = {0};
char fname[_MAX_FNAME] = {0};
char ext  [_MAX_EXT  ] = {0};

_splitpath(path, &drive[0], &dir[0], &fname[0], &ext[0]);

std::cout << "ekstenzija je " << ext << std::endl;