14. april 2003 - 00:15Der er
2 kommentarer og 1 løsning
ShellListView - endnu en gang.
Ok, denne her er lidt kryptisk, eller også har jeg stirret mig blind på den..
Meningen er at hente alle fil-extension fra en ShellListView ind i en ComboBox. En extension skal selvfølgelig kun optræde én gang, og mapper og drev (som jo bliver vist i en ShellListView) skal ikke tages i betragtning. Ok, hver gang indholdet af ShellListView'en ændres, kaldes denne procedure : ---------------------------------------------------------- procedure TFormNamer.changeQuickSelect; var I,II : Integer; Seen : Boolean; Tmp : String; begin Tmp:=''; ComboBoxQuickSelect.Clear; ComboBoxQuickSelect.Items.Add('..QuickSelect'); for I:=0 to (ShellListViewFiles.Items.Count-1) do begin if not ShellListViewFiles.Folders[I].isFolder then begin Seen:=false; Tmp:=LowerCase(ExtractFileExt(ShellListViewFiles.Folders[I].DisplayName)); if Tmp='' then Tmp:='.<no extension>'; for II:=1 to I+1 do if Tmp=ComboBoxQuickSelect.Items[II] then Seen:=true; if not Seen then ComboBoxQuickSelect.Items.Add(Tmp); end; // if isFolder end; // for I ComboBoxQuickSelect.ItemIndex:=0; end; ---------------------------------------------------------- Det ser tilsyneladende ud til at virke, mén.. Når jeg vælger en mappe der hedder "C:\Documents and Settings\Memnoch\Desktop\FlaskMpeg 0.78.39" som indeholder en fil "flaskmpeg_078_39.zip" og en mappe "flaskmpeg_078_39" bliver indholdet af min ComboBox kun : "..QuickSelect" og IKKE : "..QuickSelect .zip" Som det var meningen. Hvorfor?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Ok det ser ud til at ShellListView også indeholder fejl! ShellListViewFiles.Folders[I].isFolder virker ikke særligt godt.
Har ændret det til: DirectoryExists(ShellListViewFiles.Folders[I].DisplayName)
som burde gøre det samme. Men koden virker nu.
procedure TForm1.Button1Click(Sender: TObject); var I: Integer; Seen: Boolean; Tmp: string; begin Tmp := ''; ComboBoxQuickSelect.Clear; ComboBoxQuickSelect.Items.Add('..QuickSelect');
for I := 0 to ShellListViewFiles.Items.Count - 1 do if not DirectoryExists(ShellListViewFiles.Folders[I].DisplayName) then begin Tmp := LowerCase(ExtractFileExt(ShellListViewFiles.Folders[I].DisplayName));
if Tmp = '' then Tmp := '.<no extension>';
if ComboBoxQuickSelect.Items.IndexOf(Tmp) <> -1 then Seen := true else ComboBoxQuickSelect.Items.Add(Tmp); end; ComboBoxQuickSelect.ItemIndex := 0; end;
Tjah... Det virker da, men ikke særlig godt. Det er lidt langsom, og den får også problemer med at forstå 'mappen' "Denne Computer". Jeg tænkte i første omgang på, at det måske kunne være et eller andet fuck up i mine iterationer..? Meen, så vidt jeg kan se, skulle de være ok. Kan det være noget lignende?
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.