AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

variabeln verbinden

Ein Thema von blah · begonnen am 15. Okt 2004 · letzter Beitrag vom 15. Okt 2004
Antwort Antwort
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#1

variabeln verbinden

  Alt 15. Okt 2004, 17:48
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:
function ExpandEnvStr(const szInput: string): string;
const
  MAXSIZE = 32768;
begin
  SetLength(Result,MAXSIZE);
  SetLength(Result,ExpandEnvironmentStrings(pchar(szInput),
    @Result[1],length(Result)));
end;
hier im forum gefunden und will jetzt folgendes anstellen:
Delphi-Quellcode:
  WINDIR := ExpandEnvStr('%windir%'); // Funktion hier der DP entnommen :-)
  ETCDIR := WINDIR + '\system32\drivers\etc';
  HOSTSFILE := ETCDIR + '\hosts';
dies dient dem Zweck das ich auf WINDIR oder ETCDIR oder direkt auf die Datei HOSTSFILE zugreifen kann.
Die variabeln sind global deklariert (als String) und werden im FormCreate gesetzt jedoch funktioniert keine wie erwartet mit ausnahme vom WINDIR.

TIA
Gruss blah
Signatur? Kann man das essen?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#2

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:05
wie macht sich dein "funktioniert nicht" bemerkbar ?

und eventuell den ganzen code, wo werden die variabeln gestzt und wo verwendet !
  Mit Zitat antworten Zitat
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:12
Ok als erstes den ganzen Code
Delphi-Quellcode:
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.
und es macht sich so bemerkbar:
Code:
Windir: C:\WINNT
etcdir: C:\WINNT
hostsfile: C:\WINNT
jedoch würde ich dies erwarten:
Code:
Windir: C:\WINNT
etcdir: C:\WINNT\system32\drivers\etc
hostsfile: C:\WINNT\system32\drivers\etc\hosts
Danke
Gruss blah
Signatur? Kann man das essen?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#4

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:18
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;
  Mit Zitat antworten Zitat
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:21
Danke Gruber_Hans_12345 jetzt geht es
Gruss blah
Signatur? Kann man das essen?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#6

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:23
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;
  Mit Zitat antworten Zitat
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: variabeln verbinden

  Alt 15. Okt 2004, 18:26
Nochmals Danke vielmals dieser Funktioniert Perfekt
Gruss blah
Signatur? Kann man das essen?
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:47 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