Entwickler-Ecke

Windows API - Fehler für ShellEcecute -> ipconfig / renew


hybris42 - Mo 02.07.07 15:23
Titel: Fehler für ShellEcecute -> ipconfig / renew

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(Handle, 'ipconfig /renew'nilnil, SW_SHOWNORMAL);
end;



Delphi-Quelltext
1:
[Fehler] botyass.pas(35): E2010 Inkompatible Typen: 'Integer' und 'PAnsiChar'                    


hey,
bei diesem befehl komm ich nicht weiter, bitte um Hilfe.
gruß


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Mo 02.07.2007 um 18:38


Timosch - Mo 02.07.07 15:25

Nimm statt nil nen leeren String.


hybris42 - Mo 02.07.07 15:31

user profile iconTimosch hat folgendes geschrieben:
Nimm statt nil nen leeren String.


so etwas:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(Handle, 'ipconfig /renew', SW_SHOWNORMAL);
end;


fehler ist identisch mit post#1


ZeitGeist87 - Mo 02.07.07 15:45

Shellexecute ist folgendermaßen aufgebaut


Quelltext
1:
Handle, pchar(Operation), pchar(Dateiname), pchar(Parameter), pchar(Verzeichnis), Cardinal(showCommand);                    



Delphi-Quelltext
1:
shellExecute(handle, pchar('command'), pchar('ipconfig /renew'), nil, pchar(''), sw_ShowNormal);                    


LG
Stefan


Robinator - Mo 02.07.07 16:03

den PCHar Typecast kannst du dir sparen... leere Strings machen da auch wenig sinn^^ nil is schon richtig ;)

der einzige fehler war, dass die Parameter nicht gepasst haben ;)

gruss


ZeitGeist87 - Mo 02.07.07 16:07

Super Programmiereinstellung!

Wenn die Funktion diesen Typ verlangt, bekommt sie ihn..ganz einfach!

LG
Stefan


Robinator - Mo 02.07.07 16:13

user profile iconZeitGeist87 hat folgendes geschrieben:
Super Programmiereinstellung!

Wenn die Funktion diesen Typ verlangt, bekommt sie ihn..ganz einfach!

LG
Stefan


Den bekommt sie auch so. Es geht auch nicht um eine "Super Programmiereinstellung" sondern darum, wie delphi mit Strings umgeht, wenn man das weis, weis man auch, dass ich recht habe :P

gruss


hybris42 - Mo 02.07.07 16:14

user profile iconZeitGeist87 hat folgendes geschrieben:
Shellexecute ist folgendermaßen aufgebaut


Quelltext
1:
Handle, pchar(Operation), pchar(Dateiname), pchar(Parameter), pchar(Verzeichnis), Cardinal(showCommand);                    



Delphi-Quelltext
1:
shellExecute(handle, pchar('command'), pchar('ipconfig /renew'), nil, pchar(''), sw_ShowNormal);                    


LG
Stefan


hey, danke für die hilfe, es klappt, zumindest kommt keine fehlermeldung mehr
ABER
mit ipconfig / renew soll ja meine ip geändert werden, was leider nicht stattfindet. wie muss ich den befehl (für dos) gestalten?


Narses - Mo 02.07.07 16:19

Moin und :welcome: im Forum!

user profile iconhybris42 hat folgendes geschrieben:
mit ipconfig / renew soll ja meine ip geändert werden, was leider nicht stattfindet. wie muss ich den befehl (für dos) gestalten?

Grundsätzlich: Neue Frage - neuer Thread! :mahn: Sonst gibt das hier Chaos. ;)

Aber trotzdem kurz zu deiner Frage: wer hat denn sowas erzählt?! :shock: Das ist (grundsätzlich erstmal) falsch! Damit aktualisierst du deine vom DHCP-Server bezogenen Daten, sonst nix. :idea:

Bitte beachten: wenn du noch Fragen zu ipconfig hast, dann in einem neuen Thread (IMHO ist das OT)!

cu
Narses


ZeitGeist87 - Mo 02.07.07 16:21

Du musst ihm erst mit


Quelltext
1:
ipconfig /release                    


sagen, dass er seine bisherigen Einstellungen vergessen soll.

Dann wendest du deinen Parameter an.
Somit fordert er neue Einstellungen vom DHCP-Server an.

LG
Stefan


hybris42 - Mo 02.07.07 16:23

user profile iconZeitGeist87 hat folgendes geschrieben:
Du musst ihm erst mit


Quelltext
1:
ipconfig /release                    


sagen, dass er seine bisherigen Einstellungen vergessen soll.

Dann wendest du deinen Parameter an.
Somit fordert er neue Einstellungen vom DHCP-Server an.

LG
Stefan


Super! Vielen vielen dank Stefan, dass ging ja mal blitzschnell. :) :)
werds gleich testen :)


Narses - Mo 02.07.07 16:26

Moin!

Das wird hier immer mehr OT... :|

user profile iconZeitGeist87 hat folgendes geschrieben:
Du musst ihm erst mit

Quelltext
1:
ipconfig /release                    

sagen, dass er seine bisherigen Einstellungen vergessen soll.

Das tut /renew auch so. ;)

Nochmal: das gewünschte Ergebnis ("neue IP") muss damit nicht zwangsweise erreicht werden, das hängt von der Konfiguration des DHCP-Servers ab! Und zur Sicherheit noch obendrauf: die "Internet-IP" kann man damit sowieso nicht ändern. :mahn:

cu
Narses


hybris42 - Mo 02.07.07 16:47

user profile iconNarses hat folgendes geschrieben:
Moin!

Das wird hier immer mehr OT... :|

user profile iconZeitGeist87 hat folgendes geschrieben:
Du musst ihm erst mit

Quelltext
1:
ipconfig /release                    

sagen, dass er seine bisherigen Einstellungen vergessen soll.

Das tut /renew auch so. ;)

Nochmal: das gewünschte Ergebnis ("neue IP") muss damit nicht zwangsweise erreicht werden, das hängt von der Konfiguration des DHCP-Servers ab! Und zur Sicherheit noch obendrauf: die "Internet-IP" kann man damit sowieso nicht ändern. :mahn:

cu
Narses


werde neuen thread erstellen thx nochmal an alle :)

edit: hier [http://www.delphi-forum.de/viewtopic.php?p=449332#449332]gehts weiter

Moderiert von user profile iconChristian S.: Daher hier geschlossen