Autor Beitrag
irrerelb
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 24.09.08 10:51 
Erstmal ein freundliches Hallo an alle Community-Member ;)

jetzt zu dem Grund meines ersten Threads auf den hoffentlich weitere folgen werden, in denen ich vielleicht auch mal jemandem helfen kann:
ich möchte für ein Programm, was mir die Arbeit erleichtern soll, mit Delphi 2005 Personal eine Internetseite im Hintergrund öffnen und dann zusätzlich die sich öffnende URL in einen String kopieren, sodass ich sie danach in Delphi verwenden kann.
Bevor blöde Fragen kommen, die URL wird vom Server aus automatisch nach irgeinem Logarithmus ein wenig verändert und ich brauche dann in Delphi die neu erstellte URL bzw. einen Teil davon. Aber das herauskopieren des Teils sollte ich dann hoffentlich selber hinkriegen
Es wäre toll, wenn mir jemand sagen könnte, wie ich das realisieren kann!
Habe es schon mit ShellExecute() etc. versucht und schon alles mögliche in Google eingegeben, um vielleicht eine Lösung zu finden, komme aber leider nicht wirklich weiter
Man sollte vielleicht noch dazu sagen, dass ich ein relativ großer Noob bin, was Delphi und programmieren angeht und in Informatik in der Schule lieber alles andere gemacht habe... Wollte mir eigentlich "nur" schnell dieses Programm schreiben, aber vielleicht finde ich ja Spaß am Programmieren, sobald ich das Problem gelöst habe ^^
Für gute Tipps gibts natürlich BWs!
Aber bitte nicht nur ein Schlagwort hinschreiben, denn ich habe, wie gesagt, noch nicht soo den Durchblick
Danke im voraus!

greez irrerelb


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 24.09.2008 um 13:07
<TargeT>
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 59

Win XP, Win 98
Delphi 7
BeitragVerfasst: Mi 24.09.08 11:42 
Also du willst den Quellcode der Seite in ein String haben richtig?
Wenn ja dann könntest du das zb über den Indy´s machen.

ausblenden Delphi-Quelltext
1:
Html.Text := IdHTTP1.Get('http://www.google.de');					


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
irrerelb Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 24.09.08 22:20 
Hmm, also das ist auch eine gute Idee ^
Meinte es eig so, dass ich dann nur die URL der sich öffnenden Adresse in einen String kriege ;)
denn ich öffne eine Seite die ungefähr so heißt hxxp://www.blub.de/blub_12345.htm und der server macht daraus dann hxxp://www.blub.de/blub_67890.htm und ich brauche halt die Ziffernfolge die in der neuen URL drin ist.
Ich versuche es mal so, aber vielleicht hat ja noch jemand eine Idee, wie ich direkt die URL in einen String kopiert kriege?!
Danke schonmal!

/edit: Also mit den Indy-Komponenten komme ich nicht klar :( Habe jetzt wieder 2 Stunden weiterprobiert und nix hinbekommen... Gibt es vlt eine andere Möglichkeit? :(
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 25.09.08 00:28 
Keine sinnvolle. Was klappt den mit den Indys nicht?
Da bekommst du die neue URL sehr einfach und das ohne visuellen Browser oder so.
irrerelb Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 25.09.08 11:42 
Also ich habe gestern erstmal ewig gebraucht, bis ich die 10er Indys bei meinem Delphi 2005 PE installiert hatte ^^ Das hat erstmal über ne Stunde gedauert, weil ich mich ja wie gesagt noch nicht soo gut mit Delphi auskenne... Jetzt habe ich die zwar installiert, aber ich habe nirgends irgwie neue Symbole oder so die ich jetzt einbinden könnte. Ist das normal?
Habe dann halt einfach mal den o.a. Befehl ausprobiert und zwar in allen möglichen Varianten aber nichts hat zu Erfolg geführt :( Habe einfach oben bei Uses IdHTTP mit eingegeben... Muss ich da noch irgwas beachten?
Jetzt grade wollte ich Delphi starten und er hat mir drei Fehlermeldungen gebracht, dass jeweils eine Datei nicht zu finden sei und das waren die drei Dateien für Indy... Ach mann, hier klappt auch nix :(
Wäre das mit einem virtuellen Browser denn so kompliziert?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 25.09.08 11:49 
Die fehlenden Dateien müssten ja irgendwo liegen, wo die Indy-Dateien eben liegen. Delphi kennt aber evtl. das Verzeichnis nicht. Suche einfach mal nach den Dateien auf der Festplatte und füge die Verzeichnisse wo die liegen zum Pfad hinzu.
Tools --> Optionen --> Bibliothek - Win32 --> Bibliothekspfad

Ja, mit einem Browser wäre es entweder komplizierter und unzuverlässiger (externer Browser) oder langsamer und aufgeblähter und ggf. unzuverlässiger (interner versteckter Browser).

Übrigens sind die Indys beim neueren, ebenfalls kostenlosen, Turbo Delphi bereits dabei, das ist auch nicht so eewig langsam wie 2005 PE und hat auch Features, die bei 2005 nur in der Professional Variante drin sind.
Dafür kann man keine zusätzlichen Komponenten, also solche, die nicht schon bei Delphi dabei sind, visuell nutzen sondern muss die manuell erstellen.
irrerelb Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 25.09.08 13:14 
Okay, dann werde ich mir jetzt mal eine Turbo-Version herunterladen ^^
Muss ich denn dann noch was anderes beachten außer halt die IdHTTP in die uses mit einzubinden?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 25.09.08 13:46 
Das sollte funktionieren, wenn einer der Redirect-Codes zurückgegeben wird (getestet habe ichs nicht):
ausblenden 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:
type
  TFormX = class(TForm)
  private
    procedure HttpOnRedirect(Sender: TObject; var dest: string;
      var NumRedirect: Integer; var Handled: boolean;
      var VMethod: TIdHTTPMethod);

...

procedure TFormX.HttpOnRedirect(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: boolean; var VMethod: TIdHTTPMethod);
begin
  ShowMessage(dest);
end;

...

var
  MyHttp: TIdHttp;
begin
  MyHttp := TIdHttp.Create(nil);
  MyHttp.HandleRedirects := True;
  MyHttp.OnRedirect := HttpOnRedirect;
  MyHttp.Get('http://blub.de');
  MyHttp.Free;
end;
irrerelb Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 25.09.08 17:58 
Cool, danke!!
Ich installier mir jetzt mal die Turbo-Version und teste das dann gleich mal! Vielen dank für die schnelle und kompetente Hilfe schonmal ;)
greez irrerelb

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hmm, also wenn ich deinen Quelltext komplett kopiere, dann kommen da die ganze Zeit irgwelche Fehler, dass er ein End erwartet aber ein Begin findet... Habe jetzt einfach mal das hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  MyHttp: TIdHttp;
begin
  MyHttp := TIdHttp.Create(nil);
  MyHttp.HandleRedirects := True;
  MyHttp.OnRedirect := HttpOnRedirect;
  MyHttp.Get('http://blub.de');
  MyHttp.Free;
end;

in eine Prozedur eingefügt, die auf Knopfdruck startet.
Allerdings kommt dann immer ein Exception-Fehler, habe leider auf "ignorieren" gestellt und jetzt kommt der Fehler nicht mehr, aber es passiert auch nichts :(
Also da stand irgwas von Bereich...
Und wie kann ich denn später auf die Variable zugreifen? Also wenn ich dann einfach Memo1.Text:=Myhttp; einfüge, sagt er, dass das inkonpatible Typen seien (also String und TIdHTTP)...
Fragen über Fragen und ich hoffe, dass du mir helfen kannst ;)
Danke bis jetzt!
greez irrerelb
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt