hm habs jetzt so:
Delphi-Quellcode:
function TForm1.FilterDirectory(_dirname: string; _level: integer): boolean;
begin
Result := false;
if (_level = 0) and (Length(_dirname) >= 2) and (_dirname[1]='K') and TOlapExtraktorBase.isnumeric(_dirname[2])
then
Result := true
else
if (_level = 1) and (Length(_dirname) >= 2) and (_dirname[1]='M') and TOlapExtraktorBase.isnumeric(_dirname[2])
then
Result := true
else
if (_level = 2) and (Length(_dirname) >= 2) and (_dirname[1]='F') and TOlapExtraktorBase.isnumeric(_dirname[2])
then
Result := true
else
if (_level = 3) and (Length(_dirname) >= 2) and TOlapExtraktorBase.isnumeric(_dirname[1]) and
TOlapExtraktorBase.isnumeric(_dirname[2]) then
Result := true
else
begin
ShowMessage('FEHLER');
end;
end;
und so:
Delphi-Quellcode:
procedure TForm1.ShowDirectory(_Tree: TTreeView; _sVerzeichnis: string; _KnotenRoot: TTreeNode);
{$region 'Kommentar ShowDirectory( _Tree:TTreeView, _sVerzeichnis:string, _Eintrag:TTreeNode, )'}
{*
Beschreibung : Procedur baut aus einer Pfadangabe einen TreeView
@param _Tree : der Tree der neu erstellt wird
@param _sVerzeichnis : das QuellVerzeichnis aus dem der Tree entsteht
@param _Eintrag : der erste Startknoten
}
{$endregion}
var
SearchRec : TSearchRec;
KnotenNeu : TTreeNode;
verz, str : string;
i : integer;
begin
verz := _sVerzeichnis;
_Tree.Items.BeginUpdate;
verz := IncludeTrailingPathDelimiter(verz);
if FindFirst(verz + '*.*',faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and FilterDirectory(SearchRec.Name, 0) then
begin
if ((SearchRec.Attr and faDirectory) <> 0) then
begin
_KnotenRoot := _Tree.Items.AddChild(_KnotenRoot, SearchRec.Name);
KnotenNeu := _KnotenRoot.Parent;
ShowDirectory(_Tree, verz + SearchRec.Name, _KnotenRoot);
_KnotenRoot := KnotenNeu;
end;
end;
until FindNext(SearchRec) <> 0 ;
FindClose(SearchRec);
end;
_Tree.Items.EndUpdate;
end;
hab zum testn mal beim level einfach 0 genommen aber er schmeist mir jetzt die ShowMessage, das heist irgendwas passt ned. Meine is numeric sieth so aus:
Delphi-Quellcode:
class function TOlapExtraktorBase.IsNumeric(_value: string): boolean;
var
i: integer;
begin
result := true;
try
i := StrToInt(_value);
except
result := false;
end;
end;
Wenn ich in der Filter Funktion den Else ShowMessage Teil weglasse schmeist er mir folgenden Fehler:
Erste Gelegenheit für
Exception bei $75E39617.
Exception-Klasse EConvertError mit Meldung ''M' ist kein gültiger Integerwert'. Prozess OlapUI.exe (5048)
Bin grad bissle überfragt was da ned passt ;(