Entwickler-Ecke
Internet / Netzwerk - Problem beim Zugriff auf Frames
jaenicke - Mo 13.02.12 23:15
Hallo und :welcome:
So wirklich verstehe ich dein Problem nicht. Was machst du wie und wo bekommst du diesen "Fehler"?
Wenn du Indy benutzt, lädst du doch ohnehin nur den Seitenquelltext. Und da musst du logischerweise die einzelnen Seiten dann auch manuell laden, da keinerlei visuelle Logik darin vorhanden ist. Und erst für die Anzeige oder eine Analyse benötigt man ja die Quelltexte der einzelnen Frames. Deren Adressen bekommst du ja im Quelltext der Hauptseite geliefert.
Bo0n - Mo 13.02.12 23:31
Das Programm soll einen Stundenplan aktualisieren
->
http://dgserver10.de/bbswissen/fileadmin/user_upload/user_upload/schuelerinternet/default.htm
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); begin try Memo1.Text := idHttp1.Get('http://dgserver10.de/bbswissen/fileadmin/user_upload/user_upload/schuelerinternet/c/07/c00082.htm'); except ShowMessage('Es ist ein Fehler aufgetreten!'); end; end; |
^ Sollte ja normalerweise den Quelltext liefern, dabei tritt genauso nur unübersichtlicher das problem in lazarus auf
->
*klick* (jpg, 123.81 KB)
Also kriege ich den eigentlichen Quelltext nicht zu sehen.. wenn ich allerdings den Quelltext des aktuellen Frames ansehe ist es genau das was ich brauche und da die URL des aktuellen Frames sich ändert brauche ich einen Weg diese URL auslesen zu können um dann den Quelltext zu erhalten den ich eigentlich brauche
Ich bin nicht der Beste im erklären und finde meist auch nicht die Worte dazu, wäre es vll möglich, dass ich mich per Skype etc. melden kann?
Moderiert von
Martok: Delphi-Tags hinzugefügt
Moderiert von
Narses: Bild als Anhang hochgeladen.
jaenicke - Mo 13.02.12 23:59
Bo0n hat folgendes geschrieben : |
Also kriege ich den eigentlichen Quelltext nicht zu sehen.. |
Das
ist der eigentliche Quelltext der Seite. Darin musst du nach dem Link zu dem Frame suchen, auf den du zugreifen möchtest. Eine andere Möglichkeit gibt es nicht.
Im Zweifelsfall reichen schon normale Stringoperationen wie Pos, Copy, Delete, ... oder du parst den Quelltext richtig.
Bo0n - Di 14.02.12 19:39
Ich habe mir die Links angesehen aber ich komme nicht auf den Frame den ich brauche, was natürlich auch daran liegen könnte, dass ich sehr wenig Ahnung und keine Erfahrung damit habe
Wie soll ich denn überhaupt vorgehen um den Frame zu finden?
Bo0n - Mi 15.02.12 12:04
^hat sich geklärt
Andere Frage..
Ich möchte in ein Textfeld einen Klassennamen eingeben und nach diese die Frames danach durchsuchen um den Stundenplan auszufüllen, damit auch neue Klassen gefunden werden können.
Ist es machbar? und wenn ja würde diese vorgehensweise das Programm verlangsammen?
Xion - Mi 15.02.12 12:31
Hast du denn keine Möglichkeit, auf anständige Rohdaten zuzugreifen (eine Datenbankschnittstelle wäre ein Traum). Weil irgendwo gibt es (hoffentlich) Daten in einem Format, dass man sie auslesen kann.
Die Werbung verspricht, dass es sowas gibt:
http://www.grupet.at/de/produkte/untis/stundenplan.php
PS: wenn du nicht direkt eine Datenbankschnittstelle hast, dann wäre es ja immernoch evtl. möglich, statt den blöden Tabellen ein CSV-Format zu exportieren und dir dann auf der Website zu präsentieren
Bo0n - Do 16.02.12 11:46
Sofern habe ich die Stunden, Lehrer und das Fach in einer gewissen Art und Weise rausgefiltert
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button2Click(Sender: TObject); var stringliste : Tstringlist; index, start,ende : integer; begin stringliste := TStringList.Create; stringliste.Text:= Memo1.Text; for index := 0 to stringliste.Count - 1 do begin if pos('>', stringliste.strings[index]) >0 then begin start := pos('>',stringliste.Strings[index]); ende := Pos('</',Copy(stringliste.Strings[index],start,length(stringliste.Strings[index]))); Memo2.Lines.Add(copy(stringliste.Strings[index],start,ende)); end; end; end; |
dabei kommt soetwas raus (siehe Anhang)
leider weiß ich nicht wie ich die >< Zeichen wegkriege und die Klassenräume suche
gibt es einen platzhalter welcher mir erlaubt bei
start := pos('>',stringliste.Strings[index]); statt '>' nichts zu schreiben?
leeres Feld ist leider keine Lösung da ich statt z.B.
>WOB< ein
<B>WOB< bekomme
würde mich über jede Hilfe freuen
Moderiert von
Narses: Bild als Anhang hochgeladen.
Xion - Do 16.02.12 11:54
Schreibe doch einfach
Delphi-Quelltext
1:
| start := pos('>',stringliste.Strings[index])+1; |
Bo0n - Do 16.02.12 12:03
Oh mein Gott ich seh vor lauter Bäume schon den Wald nicht mehr :(
danke dir ich würde bestimmt noch stundenlang da sitzen und nicht verstehen warum das nicht geht..
hat einer einen Tipp wie ich die Räume finde? (siehe Anhang)
Moderiert von
Narses: Bild als Anhang hochgeladen.
Bo0n - Do 16.02.12 14:04
das geht doch mit Sicherheit einfacher oder ? :D
wenn ich ehrlich bin versteh ich den Quellcode nicht.. bin halt noch ein Anfänger
Narses - Do 16.02.12 14:35
Moin!
Bo0n hat folgendes geschrieben : |
das geht doch mit Sicherheit einfacher oder ? |
Ja, klar, aber Pos() und Copy() kennst du ja nun schon. :nixweiss:
cu
Narses
Xion - Do 16.02.12 16:20
Ist das nicht einfach immer der x-te Wert in deiner StringListe?
Ansonsten musst du versuchen anhand der Schriftgröße/-typ rauszukriegen, welcher Teil nun der Raum ist (mit Copy/Pos)
Bo0n - Fr 17.02.12 07:52
hat sich erledigt danke für die hilfe :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!