![]() |
variabeln verbinden
Hallo DP,
Ich steh gerade auf dem schlauch und habe ein kleines Problem und zwar will ich die hosts Datei in meinem kleinen Programm bearbeiten. ich habe
Delphi-Quellcode:
hier im forum gefunden und will jetzt folgendes anstellen:
function ExpandEnvStr(const szInput: string): string;
const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))); end;
Delphi-Quellcode:
dies dient dem Zweck das ich auf WINDIR oder ETCDIR oder direkt auf die Datei HOSTSFILE zugreifen kann.
WINDIR := ExpandEnvStr('%windir%'); // Funktion hier der DP entnommen :-)
ETCDIR := WINDIR + '\system32\drivers\etc'; HOSTSFILE := ETCDIR + '\hosts'; Die variabeln sind global deklariert (als String) und werden im FormCreate gesetzt jedoch funktioniert keine wie erwartet mit ausnahme vom WINDIR. TIA |
Re: variabeln verbinden
wie macht sich dein "funktioniert nicht" bemerkbar ?
und eventuell den ganzen code, wo werden die variabeln gestzt und wo verwendet ! |
Re: variabeln verbinden
Ok als erstes den ganzen Code
Delphi-Quellcode:
und es macht sich so bemerkbar:
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Memo2: TMemo; Label1: TLabel; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; WINDIR, ETCDIR, HOSTSFILE: String; implementation {$R *.dfm} function ExpandEnvStr(const szInput: string): string; const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))); end; procedure TForm1.FormCreate(Sender: TObject); begin // C:\WINNT\system32\drivers\etc\hosts WINDIR := ExpandEnvStr('%windir%'); // Funktion existier hier aus DP ETCDIR := WINDIR + '\system32\drivers\etc'; HOSTSFILE := ETCDIR + '\hosts'; end; procedure TForm1.Button3Click(Sender: TObject); begin Close; end; procedure TForm1.Button1Click(Sender: TObject); begin // Lesen der Hosts Datei Memo1.Lines.Add('Windir: ' + WINDIR); Memo1.Lines.Add('etcdir: ' + ETCDIR); Memo1.Lines.Add('hostsfile: ' + HOSTSFILE); end; end.
Code:
jedoch würde ich dies erwarten:
Windir: C:\WINNT
etcdir: C:\WINNT hostsfile: C:\WINNT
Code:
Danke
Windir: C:\WINNT
etcdir: C:\WINNT\system32\drivers\etc hostsfile: C:\WINNT\system32\drivers\etc\hosts |
Re: variabeln verbinden
Da liefert ExpandEnvStr einen falschen String zurück (hat wahrscheinlich hinten nach einen binary 0 dran) ... warum ? keine Ahnung, im Source siehts gut aus
probier mal (nur testweise, keine Endlösung .....)
Delphi-Quellcode:
function ExpandEnvStr(const szInput: string): string;
const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))); setlength(Result, strlen(PChar(Result))); end; |
Re: variabeln verbinden
Danke Gruber_Hans_12345 jetzt geht es :-D
|
Re: variabeln verbinden
OK, dann sollte es so ohne Probleme funktionieren :
Delphi-Quellcode:
function ExpandEnvStr(const szInput: string): string;
const MAXSIZE = 32768; begin SetLength(Result,MAXSIZE); SetLength(Result,ExpandEnvironmentStrings(pchar(szInput), @Result[1],length(Result))-1); end; |
Re: variabeln verbinden
Nochmals Danke vielmals dieser Funktioniert Perfekt
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz