![]() |
Exception EAccessviolation Error
Guten Tag,
ich bekomme folgende Meldung direkt beim Start meiner Console application.
Code:
hier der Delphi Code
---------------------------
Application Error --------------------------- Exception EAccessViolation in module Project1.exe at 0001D1B8. Access violation at address 0041D1B8 in module 'Project1.exe'. Read of address 00000118. --------------------------- OK ---------------------------
Delphi-Quellcode:
Der Fehler kommt immer in der letzten Zeile (hier FHTTP.Post..)
program Project1;
uses SysUtils, classes, idhttp, windows, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient; var postdata : tstringlist; FHTTP: TIDHTTP; begin postdata := tstringlist.Create; postdata.Add('a=test1'); postdata.Add('b=test2'); postdata.Add('c=test3'); FHTTP.Post('http://server.de/test.php',postdata); end. Was kann der Fehler sein? Google hat nichts geholfen. Mfg |
AW: Exception EAccessviolation Error
FHTTP ist ja auch nicht erstellt. Kein wunder das es kracht.
|
AW: Exception EAccessviolation Error
![]() Auch hier im Forum findet man "zuviele" Threads, bezüglich "Zugriffsverletzung" und "Read of address 0000xxxx". 0 = nil = irgendwas existiert nicht Und zum Glück werden globale Variablen automatisch mit 0/nil initialisiert. |
AW: Exception EAccessviolation Error
Zitat:
Delphi-Quellcode:
@himitsu
var
postdata : tstringlist; FHTTP: TIDHTTP; ich habe schon gegoogelt leider hat mir ads nicht weitergeholfen. |
AW: Exception EAccessviolation Error
Zitat:
Delphi-Quellcode:
Das sind nur die variablen.
postdata : tstringlist;
FHTTP: TIDHTTP; Hier
Delphi-Quellcode:
hast du die TStringList erstellt und an postdata zugewiesen.
postdata := tstringlist.Create;
Aber nirgendwo wird eine TIDHTTP-Instanz erstellt und an FHTTP übergeben. PS: Du gibst auch nirgendwo die erstellten Instanzen wieder frei.
Delphi-Quellcode:
Wenn man etwas erstellt, dann muß man es auch wieder freigeben, es sei denn man beauftragt jemand anderes dieses zu tun (z.B. siehe Owner, welchen man manchmal angeben kann)
postdata.Free;
FHTTP.Free; |
AW: Exception EAccessviolation Error
Also muss das etwa so aussehen:
Delphi-Quellcode:
(Ob das jetzt alles so stimmt, weiß ich nicht, da ich die Indy-Komponenten nicht aus dem Kopf beherrsche)
begin
FHTTP := TIDHTTP.Create(nil); try postdata := tstringlist.Create; try postdata.Add('a=test1'); postdata.Add('b=test2'); postdata.Add('c=test3'); FHTTP.Post('http://server.de/test.php',postdata); finally postdata.Free; end; finally FHTTP.Free; end; end. |
AW: Exception EAccessviolation Error
Zitat:
- Kein ContentType; der Server weiß überhaupt nicht in welchem Format die Parameter ankommen - Parameter in einer TStringList führt zu Problemen mit Zeilenumbrüchen und zu Encodingproblemen mit UTF-8 Webseiten Hier mal ein Basis Beispiel bei einer ISO-8859-X Webseite:
Delphi-Quellcode:
Ich werde auch nicht Müde um auf mein Tutorial zu verlinken :mrgreen:
begin
FHTTP := TIDHTTP.Create(nil); try postdata := TStringStream.Create(''); try postdata.WriteString('a=test1&'); postdata.WriteString('b=test2&'); postdata.WriteString('c=test3&'); FHTTP.Request.ContentType := 'application/x-www-form-urlencoded'; FHTTP.Post('http://server.de/test.php', postdata); finally postdata.Free; end; finally FHTTP.Free; end; end. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz