| Autor |
Beitrag |
noo.bee 
      
Beiträge: 120
|
Verfasst: Di 15.09.09 16:57
boah ich dreh durch... ich hab alles neu gemacht, dann die function kopiert und in dem code
Delphi-Quelltext 1: 2: 3: 4:
| if Login('benutzername', 'passwort', 'http://duckload.com/index.php?Modul=Login') then ShowMessage('Login war erfolgreich') else ShowMessage('Login fehlgeschlagen'); |
den nutzer und das passwort durch meine realen daten erstetzt. absturz wegen zugriffsverletzung bei adresse...
mal ehrlich, bin ich zu blöd 
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Di 15.09.09 22:18
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 15.09.09 22:21
Wie wäre es mit etwas Geduld? | Richtlinien hat folgendes geschrieben: | 4.6 Schiebeposting
Schiebeposting (ein Posting um sein eigenes Topic für unsere Leser wieder als ungelesen zu markieren) sind nach 24 Stunden erlaubt. Es gibt keine Begrenzung von Schiebepostings, sofern ihr Abstand 24 Stunden beträgt. |
Zum Thema: In welcher Zeile passiert der Fehler denn?
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Di 15.09.09 22:50
| Zitat: | | In welcher Zeile passiert der Fehler denn? |
mhh, gute frage. der fehler kommt auch erst, wenn ich auf den button klicke. also das Form1 baut sich noch fehlerfrei auf.
... ist eine exception der klasse eaccessviolation mit der melung 'zugriffsverletzung bei adresse 004ab5f4 in modul 'test5projekt.exe'. lesen von adresse 00000140' aufgetreten.
zusätzlch kommt in der idhttp eine rote markierung bei der zeile 1576:
Delphi-Quelltext 1: 2: 3: 4:
| function TIdCustomHTTP.GetRequestHeaders: TIdHTTPRequest; begin Result := FHTTPProto.Request; end; |
hab noch ne meldung gesehen:
Delphi-Quelltext 1:
| [DCC Hinweis] test5.pas(33): H2077 Auf 'Login' zugewiesener Wert wird niemals benutzt |
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 16.09.09 06:29
noo.bee hat folgendes geschrieben : | | Zitat: | | In welcher Zeile passiert der Fehler denn? |
mhh, gute frage. der fehler kommt auch erst, wenn ich auf den button klicke. |
Ja, aber was passiert dann beim Debuggen? Ich meine wenn du einen Haltepunkt dort setzt und das zeilenweise abarbeitest, dann merkst du ja in welcher Zeile der Fehler auftritt.
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Mi 16.09.09 10:40
ok, habs zeilenweise durchgetestet. er stürzt hier ab:
in der IDHTTP.pas bei zeile 1576
Delphi-Quelltext 1: 2: 3: 4:
| 1574: function TIdCustomHTTP.GetRequestHeaders: TIdHTTPRequest; 1575: begin 1576: Result := FHTTPProto.Request; 1577: end; |
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Do 17.09.09 11:02
kann einer sagen was der fehler bedeutet und wie man den beheben kann ?
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 17.09.09 12:28
noo.bee hat folgendes geschrieben : | | kann einer sagen was der fehler bedeutet und wie man den beheben kann ? |
Ich glaube kaum das in den Indys ein Fehler ist, erst recht nicht in einer Komponente die so häufig benutzt wird. Der Fehler tritt schon früher auf und zwar in deinem Code! Hast du dir den Link von Sebastian angeschaut? Poste doch bitte nochmal deinen jetztigen Code, am besten die ganze Unit (nicht das ganze Projekt).
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Do 17.09.09 12:34
ja das hab ich mir angeschaut. aber da hab ich auch net alles richtig gemacht. und dann wurde mir ein "sauberer" code geschrieben, um überhaupt erstmal die anmeldung hinzubekommen. das teste ich also grad:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| unit test5;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type TForm1 = class(TForm) Button1: TButton; IdHTTP1: TIdHTTP; IdCookieManager1: TIdCookieManager; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; IdHTTP1: TIdHTTP; implementation
{$R *.dfm} function Login(AUserName, APassword, AURL: String):Boolean; var PostData: TStrings; Source: String; begin Result := False;
PostData := TStringList.Create; try PostData.Add('yl_name=' + AUserName); PostData.Add('yl_pw=' + APassword);
Source := IdHTTP1.Post('http://duckload.com/index.php?Modul=Login', PostData);
Result := pos('Login war erfolgreich', Source) > 0; finally PostData.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin if Login('benutzername', 'passwort', 'http://duckload.com/index.php?Modul=Login') then ShowMessage('Login war erfolgreich') else ShowMessage('Login fehlgeschlagen'); end;
end. |
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 17.09.09 12:42
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Do 17.09.09 12:55
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 17.09.09 12:59
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Do 17.09.09 13:12
ich hatte ja schonmal paar kleine quiz geschrieben. waren nur n paar forms miteinander verbunden, bilderlisten, if-abfragen, cases, n bissi logisches und anderer einfacher "kleinkram" rechnen. war total easy. deshalb dachte ich mir zur erleichterung mach ich mir n kleines tool für den upload. dass das natürlich so "ausartet" hätte ich nicht gedacht :/
naja wenns nix wird habsch eben pech... bisher gings ja auch übern browser - dann gehts eben so weiter 
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 17.09.09 13:44
noo.bee hat folgendes geschrieben : | ich hatte ja schonmal paar kleine quiz geschrieben. waren nur n paar forms miteinander verbunden, bilderlisten, if-abfragen, cases, n bissi logisches und anderer einfacher "kleinkram" rechnen. war total easy. deshalb dachte ich mir zur erleichterung mach ich mir n kleines tool für den upload. dass das natürlich so "ausartet" hätte ich nicht gedacht :/
naja wenns nix wird habsch eben pech... bisher gings ja auch übern browser - dann gehts eben so weiter  |
Ist ja schön und gut das du dich mit Abfragen usw. auskennst. Aber ohne zumindest die Grundkenntnisse der objektorientierten Programmierung (Objekte erstellen, etc.) zu kennen, wirst du nicht sehr weit kommen.
Aufgeben wird dich im Leben niemals weiter bringen, weder in der Programmierung noch sonst wo... Außerdem ist noch kein Meister vom Himmel gefallen
Hier noch ein bisschen Literatur:
www.delphi-treff.de/...al/delphi-crashkurs/ (insbesondere www.delphi-treff.de/...hi-crashkurs/page/8/ )
www.delphi-treff.de/...-mit-boolean-werten/
www.delphi-treff.de/.../stringverarbeitung/
Wenn du das aufmerksam liest und eine Nacht auf dich wirken lässt, sollte sich dein Problem lösen lassen. Und wenn noch Fragen sind, einfach posten 
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Do 17.09.09 23:57
so, ich wieder
hab mal n bissi mit "live http headers" geschaut. jetzt klappt der login wirklich  ich lasse mir als bestätigung den quelltext von duckload.com/member/ anzeigen, welche den LOGOUT-button hat. und den sieht man nur, wenn man eingeloggt ist.
es hat noch folgendes gefehlt:
Delphi-Quelltext 1:
| StringList.Values['yl_submit'] := 'Login'; |
also so sieht die anmeldung nun aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.loginClick(Sender: TObject); begin StringList := TStringList.Create; try StringList.Values['yl_name'] := Edit1.Text; StringList.Values['yl_pw'] := Edit2.Text; StringList.Values['yl_submit'] := 'Login'; idhttp1.Post('http://duckload.com/index.php?Modul=Login', StringList); memo1.Lines.Text := idhttp1.Post('http://duckload.com/member/', StringList); finally StringList.Free; end;
end; |
wieder ne frage zum upload. im uploadformular steht "action" zum upload drin. jetzt ducht duckload spontan den server aus (sprich stor11, könnte aber beim nächsten mal auch storXX ... sein)
XML-Daten 1: 2: 3: 4: 5: 6:
| <form id="upload" enctype="multipart/form-data" [u]action="http://stor11.duckload.com:666/upload/upload.php"[/u] method="post" onsubmit="UploadHandler_startProgressBar('stor11.duckload.com:666','stor11'); return true;"> <input name="MAX_FILE_SIZE" value="9589934592" type="hidden"> <div id="uploadForm">
<div class="input_file"><input name="file[]" size="70" onchange="save(this.value,'1');document.getElementById('input_file_fake_1').innerHTML=this.value;" type="file"></div> <div class="input_file_fake" id="input_file_fake_1"></div> |
das würde doch bedeuten, dass ich nicht einfach so hochladen kann, sondern immer erst irgendwie schauen muss, auf welchen server grad geupped werden soll. oder seh ich das falsch ?
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Fr 18.09.09 09:48
Ja, du musst die "Action"-Adresse extrahieren, also erst Code der Seite runterladen und dann parsen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var s: String; Position1, Position2: Integer; begin s := herunterladenderseite..... Position1 := pos('action="', s) + 8; Position2 := PosEx(s, '"', Position1) - 1; s := Copy(s, Position1, ???); end; |
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Fr 18.09.09 14:00
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Fr 18.09.09 14:54
|
|
noo.bee 
      
Beiträge: 120
|
Verfasst: Fr 18.09.09 17:42
ok, parsen hat mit deiner hilfer natürlich bombig geklappt
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.storXXClick(Sender: TObject); var s: String; Position1, Position2: Integer; begin s := idhttp1.Get('http://duckload.com/index.html');
Position1 := pos('action="', s) +8;
Position2 := PosEx(s, '"', Position1) - 1;
s := Copy(s, Position1, 48); edit3.Text := s; end; |
beim uppen klemmts noch  ich hab den code genommen, den ihr mir vorgeschlagen habt und dazu die geparste url zum upload (diese steht im string 's'):
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure TForm1.uploadClick(Sender: TObject); var MultiPartFormDataStream: TMsMultiPartFormDataStream; Response: String; begin MultiPartFormDataStream := TMsMultiPartFormDataStream.Create; try idhttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;
MultiPartFormDataStream.AddFormField('', ''); MultiPartFormDataStream.AddFile('file[]', 'c:\clock.avi', '');
MultiPartFormDataStream.PrepareStreamForDispatch; MultiPartFormDataStream.Position := 0;
try Response := idhttp1.Post(s, MultiPartFormDataStream);
except end; finally MultiPartFormDataStream.Free; end; end; |
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Sa 19.09.09 09:18
|
|
|