Autor Beitrag
Chiller
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mi 24.12.08 15:50 
hallo

ich programmiere seit ca 3 monaten in der schule mit delphi 6 und bin deshalb noch nichr sehr erfahren, will jedoch ein programm schreiben, dass vorerst nur den quellcode einer website ausliest...
versucht habe ich das mit TIdHTTP, nachdem ich nun schon delphi 2005, 8, 7 personal editon und nun 7 second edition mit einer offentlich geeigneten indy 10 habe...

Mein Code:
ausblenden volle Höhe 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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit UHaupt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    a : TIdHTTP;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var httpcode : string;
begin
  httpcode:=a.Get('http://www.google.de');
  Memo1.Text:=httpcode;
end;

end.
wenn ich das programm nun starten will, fragt er mich nach der IdHTTP.pas, deshalb habe ich den Pfad zu der datei in meinem indy-installationsverzeichnis angegeben habe, doch dann kommt:
[quote]Project Versuch.exe raised exeption class EAccessViolation with message 'Access violation at adress 0046F49F in module 'Versuch.exe'. Read at adress 00000000' Process stopped. Use step or turn to continue.[quote]
daraufhin zeigt er hier einen fehler in der IdHTTP.pas an, wobei ein grüner pfeil davor ist:
ausblenden Delphi-Quelltext
1:
DoRequest(Id_HTTPMethodGet, AURL, nil, AResponseContent, AIgnoreReplies);					

wenn man die datei außerhalb von delphi ausführ kommt nur die fehlermeldung
Zitat:
"Access violation at adress 0046F49F in module 'Versuch.exe'. Read at adress 00000000"...

ich hoffe jmd von euch kann mir bei diesem problem weiterhelfen...

frohe weihnachten


Chiller

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.12.08 15:54 
Wo wird a denn erzeugt?
stigge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 426

WinXP
Delphi 2007
BeitragVerfasst: Mi 24.12.08 16:22 
ausblenden volle Höhe 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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit UHaupt;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    a : TIdHTTP;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  a := TIdHTTP.Create(nil);
  Memo1.Text := a.Get('http://www.google.de');
  a.Free;
end;

end.

Hast vergessen zu Erzeugen, außerdem kannst das a.Get()-Ergebnis direkt dem Memo zuweisen.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 24.12.08 16:25 
Deklariere a : TIdHTTP; lieber in der Prozedur selber. Und a ist ein wirklich aussagekräfiger Name für einen HTTP-Client :roll:

ausblenden Delphi-Quelltext
 
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
{ ... }
procedure TForm1.Button1Click(Sender: TObject);
var HTTP: TIdHTTP; httpcode : string;
begin
  HTTP := TIdHTTP.Create;
  try
    Memo1.Text := HTTP.Get('http://www.google.de');
  finally
    HTTP.Free;
  end;
end;
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mi 24.12.08 17:48 
ersteinaml danke für die antworten!
habe es nun umgeschrieben:

Code:


ausblenden volle Höhe 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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    BStart: TButton;
    Memo1: TMemo;
    procedure BStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BStartClick(Sender: TObject);
var HTTP: TIdHTTP; httpcode : string;
begin
  HTTP:=TIDHTTP.Create(nil);
  Memo1.Text:=HTTP.Get('http://www.google.de');
  HTTP.Free;
end;

end.




daraufhin sollte ich den pfad der datei IdGlaobalProtocols.pas angeben, und habe die datei wieder in meinem indy-verzeichnis gesucht, auch wenn ich gar nicht weiß weshalb ich diese pas datei überhaupt benötige...

daraufhin kam in der IdGlobalProtocols.pas in dieser zeile wieder eine fehlermeldung:


Dt := Sys.StrToInt( Fetch(Value, ADelim), 1);


was habe ich falsch gemacht?


Zuletzt bearbeitet von Chiller am Mi 24.12.08 18:23, insgesamt 1-mal bearbeitet
n-regen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 202
Erhaltene Danke: 2



BeitragVerfasst: Mi 24.12.08 18:05 
Auf jeden Fall solltest du in deinem Post mal den Quelltext in ein Delphi-Tag packen (Quelltext markieren und dann über dem Textfeld auf "Bereiche" und dann "+" klicken).

user profile iconChiller hat folgendes geschrieben Zum zitierten Posting springen:
was habe ich falsch gemacht?

Nichts.
Die Indy-Units rufen sich aber gegenseitig auf (deswegen hat dich Delphi nach der IdGlobalProtocols.pas gefragt). Damit Delphi die Dateien selber findet, solltest du den Ordner, in dem du Indy installiert hast, als sogenannten Bibliothekspfad hinzufügen. Dazu klickst du in Delphi (ich gehe jetzt mal von Delphi 7 aus) im Menü auf "Tools" und dann "Umgebungsoptionen", wählst den Reiter "Bibliothek" aus, klickst auf das "..." neben dem Feld "Bibliothekspfad", gibst in das Feld unten C:\Programme\Indy 10\LibD7 (oder den Ordner, in den du die Indys installiert hast) ein und klickst auf "Hinzufügen" und dann zwei mal auf "OK".
Danach sollte Delphi dich eigentlich nicht mehr nach den Units fragen.

Nils

Ach ja: Frohe Weihnachten!
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mi 24.12.08 18:22 
user profile iconn-regen hat folgendes geschrieben Zum zitierten Posting springen:
Auf jeden Fall solltest du in deinem Post mal den Quelltext in ein Delphi-Tag packen (Quelltext markieren und dann über dem Textfeld auf "Bereiche" und dann "+" klicken).


ich wusste nicht wie es geht, doch in zukunft werde ich es machen :-)

habe ich gemacht...doch er fragt mich wieder nach dem pfad der IdglobalProtocols.pas...ich ahbe nachgeschaut, in dem order LibD7 befindet sich nur die datei IdGlobalProtocols.dcu...aber das müsste doch eigentlich reichen....


Chiller

Moderiert von user profile iconNarses: Zitat repariert
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Fr 26.12.08 15:44 
hat niemand eine lösung für mein problem...?
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: So 28.12.08 21:05 
ich fände es auf jeden fall nett wenn amn mir überhaupt sagen kann was sache ist, ich befürche dass die indy nicht ganz ok ist, da sich die IdGlobalprotocols.duc in dem ordner befindet...doch wie schon erwähnt habe ich davon gar keine ahnung und bin für jede hilfe dankbar...

wenn ihr also irgend etwas wisst, sei es noch so dumm oder abwegig, sagt es mir bitte, sonst komme ich nämlich nicht weiter!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.12.08 21:09 
Mit der .dcu kann Delphi offenbar nichts anfangen, und das ist der Fall, wenn diese von einer anderen Version von Delphi stammt. ;-)
Eigentlich sollte die .pas Datei aber auch irgendwo dabei sein, es ist ja ein Open Source Projekt.

Welchen Ordner hast du denn jetzt im Suchpfad eingetragen?
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mo 29.12.08 13:56 
C:\Programme\Indy 10 for Delphi 7\LibD7

das ist der pfad zu der indy mit den entsprechenden dcu's, der mir schon von delphi vorgeschalgen wurde...und trotzdem geht es nicht...!


wenn ich die pas so aus dem anderen ordner auswähle, kommt auch eine fehlermeldung, in der IdGlobalProtocols.pas...!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 14:22 
Füge den anderen Ordner mit den .pas Dateien auch zum Pfad hinzu. Am besten einfach alle Odner mit .pas Dateien im Indyverzeichnis, ich weiß nicht wie das bei dir aussieht. Ich habe da 4 Ordner jeweils mit Packages und .pas Dateien (Core, Protocols, SuperCore, System).

Hast du einen Autoinstaller benutzt? Das habe ich noch nie gemacht, keine Ahnung was der macht.
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mo 29.12.08 14:30 
ich hatte nur eine datei die ich installiert habe..eine .exe und mehr musste ich nciht tun, in dem ordner waren auch noch noch 2 dll's...

bei mir sieh das so aus [url=img515.imageshack.us...screendephi7ji2.jpg]user defined image[/URL]

ich weiß jetzt nur wie bzw wo ich die anderen parts angeben soll!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 14:48 
Also bei mir sieht das Indy Verzeichnis so aus:
user defined image
In dem Fall wären es die vier markierten Verzeichnisse, die in den Pfad gehören, eben die, in denen sich die .pas Dateien befinden.

Was genau der Autoinstaller da installiert weiß ich nicht, ich halte nichts davon und habe ihn nie ausprobiert. :nixweiss:
Einloggen, um Attachments anzusehen!
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mo 29.12.08 14:58 
bei mir sieht das so aus...

[url=img230.imageshack.us...=ordnerdephimn9.png]user defined image[/URL]


du siehst ja auf dem anderne bild wie es bei mir in delphi aussieht, jetzt kann ich dort nur einen ordner angeben, und nicht mehrere...deshalb weiß ich nicht wie die anderen ordner, die man ja oben auf dem bild sieht, angeben soll!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 15:09 
Nacheinander, und jeweils auf Add klicken... :roll:
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mo 29.12.08 16:05 
ok, danke, das habe ich jetzt gemacht, dachte zuvor ich würde dann den pfad, der shcon dasteht ersetzen, da das add noch nicht"enabled"^^ war, kleiner denkfehler, dem ist ja aber nicht so...

nun kommt jedoch folgende fehlermeldung wenn ich mein programm ausführe:


Project project1.exe raised exeption class EConvertError with message 'Invalid argument to date encore.' Process stopped. Press run or stop to continue.

dabei wird in der IdGlobalProtocols.pas am ende sier Zeile ein fehler anzezeigt

Result := Sys.EncodeDate(Yr, Mo, Dt);


mein code sieht dabei so aus:

ausblenden volle Höhe 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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    BStart: TButton;
    Memo1: TMemo;
    procedure BStartClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BStartClick(Sender: TObject);
var HTTP: TIdHTTP;
begin
  HTTP:=TIDHTTP.Create(nil);
  Memo1.Text:=HTTP.Get('http://www.google.de');
  HTTP.Free;
end;

end.



ich hoffe du/jmd kann mir helfen, was ich jetzt noch tun muss...die pas hat er jetzt ja schon mal gefunden...jetzt weiß ich nur noch nicht wo der fehler liegt...!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 16:17 
Da sehe ich erstmal keinen Fehler. :nixweiss:

Die Fehlermeldung sagt mir im Moment nichts, keine Ahnung wo die her kommt.
Chiller Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34



BeitragVerfasst: Mo 29.12.08 16:18 
hm, ok...kannd ie indy irgendwie beschädigt sein...!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 29.12.08 16:23 
Ich weiß wie gesagt nicht, was der Autoinstaller macht, aber eigentlich gehe ich davon aus, dass der funktioniert. Ich nutze Delphi 7 so gut wie nicht mehr wegen der im Vergleich unkomfortablen Oberfläche, aber ich kann man schauen, ob ich was finde. Im virtuellen PC hab ich D7 ja noch.

Es gibt da ja auch Probleme auf der Website, da funktioniert ja kaum ein Download, was das Testen erschwert.