06. juni 2003 - 20:43Der er
14 kommentarer og 2 løsninger
Finde FilType der er valgt?
Hej
Hvordan finder man i delphi ud af hvilken filtype i filter brugeren har valgt...
Jeg har et filter med Tekst filer (*.txt)|*.txt og PHP filer (*.php, *.php4)|*.php, *.php4
men jeg vil gøre sådan at hvis brugeren glemmer fil extention så sætter den det automatisk på... alt efter om man har valgt txt eller php filteret i filtype combo boxen (i en SaveDialog)
Har bakset med dette længe og jeg fatter jemen af det så plz hjælp...
if (LowerCase(ExtractFileExt('c:\hest.test')) = LowerCase('.txt')) or (LowerCase(ExtractFileExt('c:\hest.test')) = LowerCase('.php')) or (LowerCase(ExtractFileExt('c:\hest.test')) = LowerCase('.php4')) then ShowMessage('Filnavnet er OK') else ShowMessage('Filnavnet er ikke OK');
Og desuden kan jeg ikke rigtigt bruge det der... for det er en løsning der automatisk SÆTTER ext'en PÅ hvis man ikke har skrevet en... ikke en der tjekker!
var FileName, FileExt: String; begin FileName := 'c:\hest.test'; FileExt := LowerCase(ExtractFileExt('c:\hest.test')); if (FileExt = LowerCase('.txt')) or (FileExt = LowerCase('.php')) or (FileExt = LowerCase('.php4')) then ShowMessage('Filnavnet er OK') else FileName := FileName + '.php'; end;
Jamen det skal virke med ALLE de der ext både .txt .php og .php4
Altså hvis du skriver Fil i filnavn og har valgt tekst filer i filter så sætter den auto .txt på og det samme med .php og .php4... kan ikke lige se at de du skrev her over ville virke hvis man valgte php filer i filter og skrev fx. fil... så burde den lave det om til fil.php og det er det jeg ikke kan...
Har kigget på SaveDialogs DefaultEXT event, det ser nogenlunde rigtigt ud men hvordan kan jeg have flere (.txt hvis tekst filer er valgt og .php hvis php filer er valgt...)!
Jeg har tjekket filterindex... det er bare hvilket filter (tekst filer/php filer) der skal være standard... og det hjælper ikke at ændre det (har prøvet).. og filter ændrer sig vel ikke i run time... det er jo en design time event hvor man sætter filteret... eller hvad??
while I < StringList.Count do begin StringList.Delete(I); Inc(I, 1); end; for I := 0 to StringList.Count - 1 do begin S := StringList[I]; if Pos(',', S) > 0 then S := Copy(S, 1, Pos(',', S) - 1); if Pos('*', S) = 1 then Delete(S, 1, 1); StringList[I] := S; end; ListBox1.Items.Assign(StringList); StringList.Free; // SaveDialog1.FilterIndex; SaveDialog1.Filter; FileName := SaveDialog1.FileName; FileExt := LowerCase(ExtractFileExt(FileName)); if (FileExt = LowerCase('.txt')) or (FileExt = LowerCase('.php')) or (FileExt = LowerCase('.php4')) then ShowMessage(FileName + ' *') else begin FileName := FileName + '.php'; ShowMessage(FileName); end; end; end;
while I < StringList.Count do begin StringList.Delete(I); Inc(I, 1); end; for I := 0 to StringList.Count - 1 do begin S := StringList[I]; if Pos(',', S) > 0 then S := Copy(S, 1, Pos(',', S) - 1); if Pos('*', S) = 1 then Delete(S, 1, 1); StringList[I] := S; end; ListBox1.Items.Assign(StringList);
FileName := SaveDialog1.FileName; FileExt := StringList[SaveDialog1.FilterIndex - 1]; if StringList.IndexOf(LowerCase(ExtractFileExt(SaveDialog1.FileName))) >-1 then ShowMessage(FileName + ' *') else begin FileName := FileName + FileExt; ShowMessage(FileName); end; StringList.Free; end; end;
Den kan endnu ikke finde ud af det når en filtype har mere end et efternavn, da kan den kun med det første...
Hmm... fandt ud af en måde med DefaultEXT... det skulle bare være det samme som Filter...
Synes godt du kan få lidt point for alt den tid du har brugt her selvom jeg selv fandt "svaret", så vi deler...!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.