AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi %..% durch Ergebnis von GetEnvironmentVariable(..) ersetzen

%..% durch Ergebnis von GetEnvironmentVariable(..) ersetzen

Ein Thema von faux · begonnen am 26. Jul 2006 · letzter Beitrag vom 26. Jul 2006
Antwort Antwort
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

%..% durch Ergebnis von GetEnvironmentVariable(..) ersetzen

  Alt 26. Jul 2006, 18:37
Hallo!

Ich hab einen String mit Umgebungsvariablen, die in Prozentzeichen eingeschlossen sind, in etwa %ProgramFiles%\Company\Product. Ich will nun alle %...% durch das Ergebnis der Funktion GetEnvironmentVariable(...) ersetzen. Gibts dafür ne vorgefertigte Funktion die mir alle ...s liefert, oder muss ich mir das selbst coden? Mir gehts nicht darum, dass ich es nicht selbst coden will, aber wenns das schon gibt, denke ich mal, dass das schneller ist, als das was ich da coden würde.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 18:49
Hallo Manuel,

vielleicht hilft dir das: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 19:01
Zitat von marabu:
Delphi-Quellcode:
function ExpandEnvStr(const szInput: string): string;
begin
  SetLength(Result, ExpandEnvironmentStrings(pChar(szInput), nil, 0));
  ExpandEnvironmentStrings(pChar(szInput), @Result[1], Length(Result));
end;
Danke! So gehts beinahe perfekt. Ein Problem hab ich noch. Wenn ich '%programfiles%\a' übergebe, wird mir C:\Program Files\a l zurückgegeben. Wo kommt das l her?!

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 19:09
Bei mir liefert die Funktion ein korrektes Ergebnis. Kannst du deinen problembehafteten Code isolieren und hier einstellen, damit ich das untersuchen kann?

marabu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#5

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 20:43
Moin Faux,

probier mal aus, ob es funktioniert, wenn Du es mit einer weiteren Variablen für das Ergebnis versuchst, und nicht direkt Result verwendest.
Ich hatte schon mal das Problem, dass die Verwendung von @StringVariable[1] sich anders verhielt, als ein PChar.
Mit letzterem hat es funktioniert, mit ersterem nicht, und das bei ansonsten gleicher Routine.
(Wenn ich jetzt eine Idee hätte, wie ich den Thread hier wiederfinden soll )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 20:55
Ähm...
Also ich habe jetzt mal an meinem Programm weiter programmiert und wollte den Fehler am Ende beseitigen, jedoch tritt er jetzt nicht mehr auf.
Wäre aber trotzdem interessant zu wissen, ob der Fehler noch besteht, denke ich mir und erstellte ein neues leeres Projekt (es handelt sich übrigens um eine Konsolenanwendung) und probiere es nochmals, aber es tritt nichtmehr auf...

Naja, dann bedanke ich mich für den Code!

Grüße
Faux

NACHTRAG:
Naja, einen "Fehler" habe ich noch gefunden:
Code:
+Fileversion is compatible.
~SourcePath:\\127.0.0.1\c$\licenses.lic .
~DestinationPath:C:\Program Files\Rasterex\RxView\licenses.lic .
+License file has been copied successfully.
Kann es sein, dass die Länge falsch berechnet wird? Der Punkt wurde unmittelbar nach dem Funktionsaufruf ausgegeben, jedoch sind da ein paar Leerzeichen....
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: %..% durch Ergebnis von GetEnvironmentVariable(..) erset

  Alt 26. Jul 2006, 21:48
Ich habe den Fehler nachvollziehen können - hier der korrigierte Code:

Delphi-Quellcode:
function ExpandEnvStr(const szInput: String): String;
begin
  SetLength(Result, ExpandEnvironmentStrings(pChar(szInput), nil, 0));
  ExpandEnvironmentStrings(pChar(szInput), @Result[1], Length(Result));
  Result := StrPas(@Result[1]);
end;
Gute Nacht

marabu
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf