Autor Beitrag
uranop
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: Mo 25.08.08 14:58 
Hi leute,

ich habe mal ne janz doofe Frage ...

Im Zuge des Auslesens von Rechnern lokal fuer Geraetebuecher ( Daten aus WMI )
mach ich das nun zusaetzlich noch mit einer Remotefunktion.

Remotehost angeben und auslesen lassen ....

klappt ja soweit auch ganz gut ...

lediglich steh ich momentan etwas aufn schlauch ....

Hier mein problem ...

die meisten meiner abfrage routinen sind functions ausserhalb von procedures
wenn ich nun hergehen moechte und den hostnamen der - in meinem fall - in der Edit25 steht
an die functions uebergeben will ... streikt delphi...

Einzigste moeglichkeit in den funktions zusaetzlich in den vars noch Edit25 : TEdit; mit anzugeben.

dann laeuft der compiler auch ohne meckern durch...

sooo nun komme ich aber zu fehlermeldungen die immer auf
"Read of Adress 000000BE" raus laufen ....

weiss einer was der mist sein koennte ?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 25.08.08 15:07 
Warum übergibst du der Funktion das Edit? Der String, der in Edit.Text drinsteht, sollte doch ausreichen, oder?

Oder (ganz böse Befürchtung), machst du sowas?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure meineProc;
var Edit25: TEdit;
begin
  hostname := Edit25.Text;
end;
Das kann ja gar nicht funktionieren.

Besser wäre sowas:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure meineProc(hostname: String);
begin
   // machwas mit hostname
end;

// Aufruf von der Form aus:
meineProc(Edit25.Text);

_________________
We are, we were and will not be.
uranop Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: Mo 25.08.08 15:22 
neehm ne so einfach denn doch nicht ...

hier mal nen auszug

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
// Inventory nummer

function GetInventorynr: string;
var
regist: TRegistry;
s: string;
Edit25: TEdit;
begin
  regist:=TRegistry.Create(KEY_READ);
  try
    regist.RootKey:=HKEY_LOCAL_MACHINE;
    regist.RegistryConnect(Edit25.Text); //voreingestellt ist HKEY_CURRENT_USER
    regist.OpenKey('SOFTWARE\Roche\SMS',true);
      //bei true wird Schlüssel erzeugt, wenn er noch nicht existiert
     s:= regist.ReadString('ComputerInventoryNumber');
  finally
    regist.Free;
  end;
  GetInventorynr := s;
end;


das ding wird erst viel viel spaeter mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
   begin
   Edit1.Text := Edit25.Text; //GetHostname;
ProgressBar1.StepIt;
   Edit2.Text := GetInventorynr;
.
.
.


aufgrufen


wenn ich das Edit25 : TEdit;
da nicht mit rein mache in der function denn kommt
undeclared identifier Edit25 bla bla
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 25.08.08 15:26 
...also hat sich meine ganz böse Vermutung bestätigt. Meine Glaskugel funktioniert also doch. :mrgreen:

Füge der Funktion GetInventorynr einen Parameter vom Typ String hinzu, den du dann weiter benutzt. Beim Aufruf der Funktion übergibst du dann den Text aus Edit25.

_________________
We are, we were and will not be.
uranop Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: Mo 25.08.08 18:59 
jawoll ja ... naja is montag da kann man bissl neben sich stehen : P