Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TRegExpr library und GetEnvironmentVariable (https://www.delphipraxis.net/48106-tregexpr-library-und-getenvironmentvariable.html)

ringli 20. Jun 2005 21:42


TRegExpr library und GetEnvironmentVariable
 
Ich bastel schon seit Stunden an einem Problem das ich mit der TRegExpr library habe. Und zwar möchte ich mit dieser Unit in einer Zeichenfolge bestimmte Teile ersetzen. Dazu verwende ich im Moment folgenden Code:
Code:
Edit1.Text := ReplaceRegExpr ('%\w*%' {Suche nach..},
                              '/s /u "%systemroot%\test.txt" "%temp%"' {...in diesem Text},
                              'C:\Windows' {Ersetze die Fundstellen mit diesem Text},
                              False);
Nach dem Durchlauf hat die Unit den Text so verändert:
Code:
/s /u "C:\Windows\test.txt" "C:\Windows"
Soweit ist das alles klar, aber wie bzw. wo muss ich die RegExpr-Unit anpassen damit ich erreiche das die Fundstellen ausgelesen (also z.B. %systemroot% und %temp%) und diese während des Suchdurchlaufes jeweils mit Hilfe von GetEnvironmentVariable übersetzt und in den Text zurückgeschrieben werden?

Ich habe in der RegExpr-Unit schon an den unterschiedlichsten Stellen probehalber ein Showmessage eingesetzt um festzustellen ob dies die entsprechende Stelle ist an der ich ansetzen kann, aber leider war dies bis jetzt alles erfolglos. :cry:

Hat irgendjemand eine Idee?

alzaimar 20. Jun 2005 22:51

Re: TRegExpr library und GetEnvironmentVariable
 
Wieso machst Du das nicht einfach hinterher mit StrReplace?

marabu 21. Jun 2005 06:01

Re: TRegExpr library und GetEnvironmentVariable
 
Hallo ringli,

bei deiner Bastelei mit TRegExpr kann ich dir jetzt nicht helfen, aber das Resultat erziele ich so:

Delphi-Quellcode:
function ExpandEnvStr(const szInput: string): string;
begin
  SetLength(Result, ExpandEnvironmentStrings(pChar(szInput), nil, 0));
  ExpandEnvironmentStrings(pChar(szInput), @Result[1], Length(Result));
end;
Grüße vom marabu

ringli 21. Jun 2005 08:22

Re: TRegExpr library und GetEnvironmentVariable
 
Und warum mach ich Idiot das mit einer Function die sich über 87 Zeilen erstreckt? :wall: Ich hatte mir nämlich eine Routine geschrieben die im Prinzip das selbe erledigt, aber leider nicht alle Fälle abdeckt...

Danke Marabu, damit funktioniert es so wie es soll :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz