Autor Beitrag
Bo0n
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 13.02.12 22:56 
Moderiert von user profile iconNarses: Abgestrennt von [url=www.delphi-forum.de/...rder=asc]hier[/url].

Hallo

ich habe ein problem in diese richtung :D

bis jetzt hat alles gut funktioniert bis ich auf den folgenden fehler beim auslesen der seite traff -> *klick1* (jpg, 123.81 KB)
daraufhin habe ich mir die frames angeguckt und bin darauf gekommen
*klick2* (jpg, 84.26 KB)
*klick3* (jpg, 211.66 KB)

und jetzt komme ich zu der eigentlichen frage: ist es machbar auf diese frames zu zugreifen?
ich könnte natürlich die URL des 3. Bildes benutzen, allerdings habe ich die befürchtung, dass sich dieser spätestens jede woche ändert

würde mich über hilfe freuen :D

Moderiert von user profile iconNarses: Bilder als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 13.02.12 23:31 
Das Programm soll einen Stundenplan aktualisieren
-> dgserver10.de/bbswis...internet/default.htm

ausblenden 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 user profile iconMartok: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 13.02.12 23:59 
user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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:
www.grupet.at/de/pro...ntis/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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Bo0n Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 15.02.12 19:09 
Nein Leider habe ich kein Zugriff darauf.

Alles was ich habe ist dieser Link
-> dgserver10.de/bbswis...rnet/c/07/c00081.htm

wobei der letzte Teil (c00081.htm) für je eine Klasse steht (von c00001 - c00089)

und alles was ich kriege ist der Quelltext dieses Plans in welchem eigentlich alles steht
Bo0n Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 16.02.12 11:46 
Sofern habe ich die Stunden, Lehrer und das Fach in einer gewissen Art und Weise rausgefiltert
ausblenden 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 user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 16.02.12 11:54 
Schreibe doch einfach
ausblenden Delphi-Quelltext
1:
start := pos('>',stringliste.Strings[index])+1;					

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Bo0n Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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 user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 16.02.12 13:44 
Moin!

user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
hat einer einen Tipp wie ich die Räume finde?
Reguläre Ausdrücke? Hier ist ein Beispiel, wie das geht. :les: :think:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bo0n Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 16.02.12 14:35 
Moin!

user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
das geht doch mit Sicherheit einfacher oder ?
Ja, klar, aber Pos() und Copy() kennst du ja nun schon. :nixweiss:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Bo0n Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 17.02.12 07:52 
hat sich erledigt danke für die hilfe :)