Brauche Hilfe :(
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
oh mein gott -.-
habe jez seitdem 29.12 ca 2oder3 andere bugs versucht wegzubekommen , die immernoch dasind und jez kommt wieder dieser scheiß fehler , (pic beim ersten post) , kann sich ein progger bereitstellen und mir pers. helfen? es brachte ja letzens fast garnichts , wenn ich den code hier poste
zumindest bei diesem fehler
Hiiiilfe
habe jez seitdem 29.12 ca 2oder3 andere bugs versucht wegzubekommen , die immernoch dasind und jez kommt wieder dieser scheiß fehler , (pic beim ersten post) , kann sich ein progger bereitstellen und mir pers. helfen? es brachte ja letzens fast garnichts , wenn ich den code hier poste

Hiiiilfe

-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Da haste dir für den Anfang aber auch gleich nen richtigen Brocken ausgesucht.
Hast Du jetzt wenigstens mal die Http-Anfrage auf nen Button gelegt, anstatt das ganze Gemüse gleich im FormCreate zu machen?
Dann das nächste, bei TCP-Verbindungen (auch Http läuft über TCP Port = 80) wird nicht zwingend eine Exception ausgelöst. Wenn die Verbindung nicht klappt hast halt ne leere Stringlist, aber du mußt warten bis der Timeout kommt. Manche Funktionen könnten z.B. die Stringlist bei Mißerfolg auf nil setzen, das muß man abfangen:
if (Stringlist nil) then begin
Bei mir hatte die Abfrage ja problemlos geklappt, das deutet immernoch auf ein Netzwerkproblem hin. Die Frage, ob du hinter nem Router sitzt haste noch immer nicht beantwortet, sollte das nämlich über ISDN laufen sieht die Welt anders aus. Der Einwahlversuch des ISDN muß dazugerechnet werden, das kann zum Timeout führen wenn die Timeout-Zeit deiner Verbindung zu kurz gewählt ist.
Hast Du jetzt wenigstens mal die Http-Anfrage auf nen Button gelegt, anstatt das ganze Gemüse gleich im FormCreate zu machen?
Dann das nächste, bei TCP-Verbindungen (auch Http läuft über TCP Port = 80) wird nicht zwingend eine Exception ausgelöst. Wenn die Verbindung nicht klappt hast halt ne leere Stringlist, aber du mußt warten bis der Timeout kommt. Manche Funktionen könnten z.B. die Stringlist bei Mißerfolg auf nil setzen, das muß man abfangen:
if (Stringlist nil) then begin
Bei mir hatte die Abfrage ja problemlos geklappt, das deutet immernoch auf ein Netzwerkproblem hin. Die Frage, ob du hinter nem Router sitzt haste noch immer nicht beantwortet, sollte das nämlich über ISDN laufen sieht die Welt anders aus. Der Einwahlversuch des ISDN muß dazugerechnet werden, das kann zum Timeout führen wenn die Timeout-Zeit deiner Verbindung zu kurz gewählt ist.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
Der Synapse Teil löst in sich mit Sicherheit keine Zugriffsverletzung aus.
Man sollte halt nur weiterfahren wenn die Methode (z.B. HttpGetText) ein true zurückgibt. http://synapse.ararat.cz/docs/help/httpsend.html" onclick="window.open(this.href);return false;
Mehr ist dazu nicht zu sagen. Auch Timeouts etc. lösen keine Zugriffsverletzung aus.
Da ist einfach nur das Resultat "false" und dann sollte man auch nicht weiterverarbeiten.
Wenn man's genauer kontrollieren will (als True/False), muss man das Objekt THTTPSend selber erstellen
@Schnullerbacke: Will sagen es bringt nichts an irgendwelchen Internet Konfigurationen und Server Fragen rumzuhirnen. Das siehste dann schon, das erzählt dir Synapse. 
Man sollte halt nur weiterfahren wenn die Methode (z.B. HttpGetText) ein true zurückgibt. http://synapse.ararat.cz/docs/help/httpsend.html" onclick="window.open(this.href);return false;
Mehr ist dazu nicht zu sagen. Auch Timeouts etc. lösen keine Zugriffsverletzung aus.
Da ist einfach nur das Resultat "false" und dann sollte man auch nicht weiterverarbeiten.
Wenn man's genauer kontrollieren will (als True/False), muss man das Objekt THTTPSend selber erstellen
Code: Alles auswählen
var HTTP: THTTPSend;
....
HTTP := THTTPSend.Create;
....
HTTP.Clear;
if HTTP.HTTPMethod('GET', URL) then
begin
if HTTP.ResultCode = 200 then
begin
//hier ist alles gut -> weitere Verarbeitung mit HTTP.Document
end else ErrLog('Meldung vom Server: (' + inttostr(HTTP.ResultCode) + ') ' + HTTP.ResultString);
end else ErrLog('Problem mit der Verbindung: '+HTTP.Sock.LastErrorDesc);
end;
HTTP.free;

-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
@theo
Ich hab da gerade "imageforlazarus.pas" entdeckt, das angeblich auch "MNG", also die animierte Version von "PNG", verarbeiten soll. Muß man da irgendwas spezielles veranstalten?
Eingebunden hatt ich das, nur werden beim Imageload-Dialog die *.mng trotzdem nicht angezeigt. Das Paket ist angeblich in der Umgebung geladen.
Ich hab da gerade "imageforlazarus.pas" entdeckt, das angeblich auch "MNG", also die animierte Version von "PNG", verarbeiten soll. Muß man da irgendwas spezielles veranstalten?
Eingebunden hatt ich das, nur werden beim Imageload-Dialog die *.mng trotzdem nicht angezeigt. Das Paket ist angeblich in der Umgebung geladen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
Woher haste denn die Information wegen MNG?schnullerbacke hat geschrieben:@theo
Ich hab da gerade "imageforlazarus.pas" entdeckt, das angeblich auch "MNG", also die animierte Version von "PNG", verarbeiten soll. Muß man da irgendwas spezielles veranstalten?
Bei mir sieht's nicht so aus (0.9.20):
Code: Alles auswählen
unit ImagesForLazarus;
interface
uses
LazPNG, LazPNM, LazJPG, LazBMP, LazTGA, LazXPM, RegisterImg4Laz,
LazarusPackageIntf;
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Eugen, das ist kein "Scheiß Fehler" das meldet eine Zugriffsverletzung.EugenE hat geschrieben:oh mein gott -.-
jez kommt wieder dieser scheiß fehler , (pic beim ersten post) ,
Der Fehler kann ein ganz anderer als zu Anfang sein.
Das ist wie wenn du "Aua" schreist. Da weiss ich ohne hinsehen auch nicht, ob dir einer auf die Füsse getreten ist, oder ob du 'nen Blumentopf auf den Schädel gekriegt hast.
"Aua" (bzw. Zugriffsverletzung) ist ja nur ne "Meldung" und nicht das Problem.

-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Da das nun auch beim Debugger eintritt kann sogar der der Schuldige sein. Deswegen mal mein Hinweis auf "try except". Bau das immer da ein wo du ein Objekt initialisierst, eine Datei oder einen Stream öffnest. Das unterbindet i.a.R. auch, das der Debugger überhaupt erst meckert weil dann das Exception-Handling das unterbindet. Zumindest kriegt man dann raus an welcher Stelle genau das passiert.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Wie ich am anfang des threads schonmal gesagt hab ist der "scheiss fehler" gdb spezifisch und tritt immer das 2. 3. 4. ... mal auf wenn man ne anwendung debuggt die aufs netzwerk zugreift einfach nach jedem debuggen debugger zurücksetzen machen und man ist das problem los wiso muss ich das immer 2x schreiben
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Gilt das auch für Linux? Das ist mir so noch nicht aufgefallen.Christian hat geschrieben:Wie ich am anfang des threads schonmal gesagt hab ist der "scheiss fehler" gdb spezifisch und tritt immer das 2. 3. 4. ... mal auf wenn man ne anwendung debuggt die aufs netzwerk zugreift einfach nach jedem debuggen debugger zurücksetzen machen und man ist das problem los wiso muss ich das immer 2x schreiben
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
so habe das try except versucht
kommt immer diese zugriffsverletzung
habe es auch mit debugger zurücksetzen und so gemacht bringt auch ncihts
mir ist aufgefallen das die texte als datei gespeichert werden obwohl der die verletzung vorher erscheint
Code: Alles auswählen
try
HttpGetText('http://layer-ads.de/api/'+xml+'.xml', txt);
except
ShowMessage('hm die url spinnt -.- oder so');
end;
habe es auch mit debugger zurücksetzen und so gemacht bringt auch ncihts
mir ist aufgefallen das die texte als datei gespeichert werden obwohl der die verletzung vorher erscheint
Code: Alles auswählen
try
HttpGetText('http://layer-ads.de/api/'+xml+'.xml', txt);
except
ShowMessage('fehler');
end;
if txt <> nil then
begin
ShowMessage('gespeichert');
txt.SaveToFile(path+'xml/'+xml+'.xml');
end else begin
ShowMessage('Der Layer-Ads Server anscheinend kleinere Probleme , bitte Aktualisieren etwas später.');
end;
Was hier schon mal nicht sauber ist:
Erstens:
HttpGetText schmeisst keine Exceptions, wenn das Dokument nicht erhalten wurde. Du kannst den Try-Except Block schon da lassen, aber ob die Anfrage geklappt hat kriegst du durch den Rückgabewert raus:
hatgeklappt:=HttpGetText(.....);
Zweitens:
if txt nil then
ist sinnlos. Du musst die TStringList vorher ja selber createn. Also wird die auch nicht nil sein. Ob Daten drin sind, kriegst du mit Count raus:
if txt.count > 0 then
Erstens:
HttpGetText schmeisst keine Exceptions, wenn das Dokument nicht erhalten wurde. Du kannst den Try-Except Block schon da lassen, aber ob die Anfrage geklappt hat kriegst du durch den Rückgabewert raus:
hatgeklappt:=HttpGetText(.....);
Zweitens:
if txt nil then
ist sinnlos. Du musst die TStringList vorher ja selber createn. Also wird die auch nicht nil sein. Ob Daten drin sind, kriegst du mit Count raus:
if txt.count > 0 then