Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Access Violation bei manchen Versionen von Windows? (https://www.delphipraxis.net/109625-access-violation-bei-manchen-versionen-von-windows.html)

richie_k 4. Mär 2008 18:17


Access Violation bei manchen Versionen von Windows?
 
Hallo!
Habe gerade ein Programm fertiggestellt - auf meinem Rechner und auf meinem Laptop läuft es Einwandfrei, auf dem von meinem Kumpel will es nicht laufen.. die berühmte Access violation..

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  htmlcontent:string;
begin
  htmlcontent:='u';
  htmlcontent:=GETHTML('http://www.link.de/status.php?username='+Edit1.Text+'&password='+Edit2.Text);
  while (htmlcontent= 'u') do
  begin
    form1.caption:='Überprüfung...';
    sleep(1000);
  end;
  if htmlcontent[1]= '1' then
  begin
    login:=true;
    FormActivate(Sender);
  end
  else
    Form1.caption:='Login';
end;
Ich glaube es liegt am htmlcontent[1], aber was kann ich machen, damit da auf keinen fall solch eine Message kommt?
hilfe :(
ach ja getHTML liest einfach die seite aus.. die seite gibt 0 oder 1 zurück, jenachdem, ob name und passwort stimmten oder nicht.

Freue mich auf Hilfe! :) DAnKE

Richie

DeddyH 4. Mär 2008 18:20

Re: Access Violation bei manchen Versionen von Windows?
 
Delphi-Quellcode:
if (Length(htmlcontent) > 0) and (htmlcontent[1]= '1') then
Wenn der String leer ist, knallt es beim Zugriff auf das erste Zeichen (logisch, oder?).

richie_k 4. Mär 2008 18:36

Re: Access Violation bei manchen Versionen von Windows?
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  htmlcontent:string;
begin
  htmlcontent:='u';
  htmlcontent:=GETHTML('http://link.com/login.php?username='+Edit1.Text+'&password='+Edit2.Text);
  while ( (htmlcontent= 'u') OR (not(Length(htmlcontent)>0))) do
  begin
    form1.caption:='Überprüfung...';
    sleep(1000);
  end;
  if htmlcontent[1]= '1' then
  begin
    login:=true;
    //FormActivate(Sender);
  end
  else
    Form1.caption:='Login';  
end;
immer noch der gleiche Fehler..
hab sogar mal FormActivate ausgeklammert um zu verhindern, dass es daran liegt..
ich verstehe es nicht - bei mir klappt es wunderbar, bei ihm nicht.

hoika 4. Mär 2008 18:43

Re: Access Violation bei manchen Versionen von Windows?
 
Hallo,

MadExcept runterladen, einbinden
und damit das Programm starten.


Heiko

Fussball-Robby 4. Mär 2008 18:44

Re: Access Violation bei manchen Versionen von Windows?
 
Wie wärs mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  htmlcontent:string;
begin
  htmlcontent:='u';
  htmlcontent:=GETHTML('http://link.com/login.php?username='+Edit1.Text+'&password='+Edit2.Text);
  while ( (htmlcontent= 'u') OR (not(Length(htmlcontent)>0))) do
  begin
    form1.caption:='Überprüfung...';
    sleep(1000);
  end else        //<-----Sonst wird das danach ja auch ausgeführt, wenn das oben nicht zutrifft
  if htmlcontent[1]= '1' then
  begin
    login:=true;
    //FormActivate(Sender);
  end
  else
    Form1.caption:='Login';  
end;

jfheins 4. Mär 2008 18:52

Re: Access Violation bei manchen Versionen von Windows?
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
if (Length(htmlcontent) > 0) and (htmlcontent[1]= '1') then
Wenn der String leer ist, knallt es beim Zugriff auf das erste Zeichen (logisch, oder?).

Nicht notwendigerweise ;)

Um genau zu sein: Es "knallt" nur wenn die Compilerdirektive "Boolsche Ausdrucke komplett auswerten" oder so auf aktiviert ist - standardmäßig ist es deaktiviert.

Wenn es aktiviert ist und der String ist leer, gibt der erste Teilausdruck false zurück- damit kann der Gesamtausdruck nicht mehr wahr werden und die Auswertung bricht ab ;)


Oh, sorry - hatte gedacht das wäre ein Zitat und keine Verbesserung ... :oops:

DeddyH 4. Mär 2008 18:53

Re: Access Violation bei manchen Versionen von Windows?
 
Das war ja auch mein Korrekturvorschlag ;) :lol:

richie_k 4. Mär 2008 19:25

Re: Access Violation bei manchen Versionen von Windows?
 
habe den Startwert von htmlcontent jetzt auf '' gesetzt, also leeren String, damit ich bei der while Schleife
while not(Length(htmlcontent)>0) do
schreiben konnte.
Es gibt immer noch eine Fehlermeldung, sogar, wenn ich
if htmlcontent[1]= '1' then
in
if htmlcontent='1' then
ändere..

ich habe jetzt die befürchtung, dass GETHTML bei ihm nicht funktioniert..
GETHTML ist eine Funktion, die man u.A. hier:
http://www.delphipraxis.net/internal...ect.php?t=6143
betrachten kann.

Kann es sein, dass das System bestimmte Voraussetzungen für die Arbeit damit mitbringen muss?
Immerhin geht bei mir alles ohne Probleme..


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:13 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