Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#6

Re: TreeViewTools (rund um Node.Text und Node-Path)

  Alt 8. Mär 2009, 12:18
Schlanker mag es aussehn, aber dafür sind dort mehrere Prozeduraufrufe und Rückprünge drin und es wird ein klein bissl mehr Speicher benötigt.
Delphi-Quellcode:
function GetNodePath(aNode:TTreeNode; WithTailingDelimiter: Boolean): String;
begin
  Result := '';
  while Assigned(aNode) do begin
    Result := aNode.Text + '\' + Result;
    aNode := aNode.Parent;
  end;
  if not WithDelimiter then Delete(Result, Length(Result), 1);
end;


// falls aNode nie NIL ist, dann auch so möglich

function GetNodePath(aNode:TTreeNode; WithTailingDelimiter: Boolean): String;
begin
  if WithDelimiter then Result := aNode.Text + '\else Result := aNode.Text;
  aNode := aNode.Parent;
  while assigned(aNode) do begin
    Result := aNode.Text + '\' + Result;
    aNode := aNode.Parent;
  end;
end;
ach ja, .Parent ruft .GetParent auf, was wiederum intern einiges macht ... drum hab ich das in der Schleife nur noch einmal drin.

Zitat von Satty67:
Wie implementiere ich die Aufgabe, manche Node mit und mache ohne abschließenden '\' zu liefern? Außerhalb lösen?
Delphi-Quellcode:
function GetNodePath(Node: TTreeNode; WithTailingDelimiter: Boolean): String;
begin
  if Assigned(Node) then begin
    if WithTailingDelimiter then
      Result := GetNodePath(Node.Parent, True) + Node.Text + '\'
    else Result := GetNodePath(Node.Parent, True) + Node.Text;
  end else Result := '';
end;

// oder

function GetNodePath(Node: TTreeNode; WithTailingDelimiter: Boolean): String;
begin
  if Assigned(Node) then begin
    Result := GetNodePath(Node.Parent, True) + Node.Text;
    if WithTailingDelimiter then Result := Result + '\';
  end else Result := '';
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat