Hallo Leute, langsam aber sicher verzweifle ich, ich brauche eure Hilfe, ich komm und komm nicht auf den Fehler.
Ich schreibe gerade ein Prgramm, wo wenn ich mich einlogge dann soll der Browser gestartet werden mit einer bestimmten Seite.
Die Pfade des Browsers speichere ich in einer
DLL die wie folt aussieht:
Delphi-Quellcode:
function checkBrowser(browser: string): string; stdcalL;
begin
if (browser = 'Internet Explorer') then
result := 'C:\Programme\Internet Explorer\iexplore.exe';
if (browser = 'Mozilla FireFox') then
result := 'C:\Programme\Mozilla Firefox\firefox.exe';
if (browser = 'Mozilla') then
result := '';
if (browser = 'Opera') then
result := 'C:\Programme\Opera\opera.exe';
if (browser = 'Netscape') then
result := '';
if (browser = '') or (browser = 'Keinen') then
result := '';
end;
exports
checkBrowser;
Im Programm wo ich die
DLL aufrufe und dem Übergebe welcher Browser ausgeführt werden soll sieht das ganze folgender Massen aus:
Delphi-Quellcode:
...
implementation
uses Unit1;
function getUserId(name: string;passwort: string;form2:TForm2):integer;stdcall; external 'db1.dll';
function checkBrowser(browser: string): string; stdcalL;external 'browser.dll';
In der Funktion TForm2.FormShow prüfe ich dann eben welcher Browser ausgewählt wurde bzw. ob der Benutzer gülitg ist oder nicht.
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
var
pfadBrowser,pfadDatei:
string;
ppfadBrowser,ppfadDatei: pchar;
begin
if (adoconnection1.Connected = true)
then
begin
try
benutzerid.text := inttostr(getUserId(benutzer.text,passwort.text,form2));
if (benutzerid.text <> '
-1')
then
begin
pfadBrowser := checkBrowser(form2.browser.text);
ppfadBrowser := pchar(pfadbrowser);
pfadDatei := '
localhost/test.php';
ppfadDatei := pchar(pfaddatei);
ShellExecute(Form2.Handle,
nil, ppfadBrowser, ppfadDatei,
nil, SW_SHOWMAXIMIZED);
end;
except
messagedlg('
Fehler beim Einloggen.',mterror,[mbok],0);
form2.close;
end;
end;
end;
Es wird alles richtig übergeben. Dennoch bekomme ich die Meldung "ungültige Zeigeroperation". Wenn ich dann bei der Fehlermeldung auf OK klick läuft das Programm normal weiter und es öffnet sich der Browser. Doch was mache ich falsch. Ich habe soviel Probleme mit den
DLL's, und ich kann und kann keinen Fehler finde. Was mache ich falsch. Mit Bitte um Hilfe.
Danke.