Autor Beitrag
bruder jonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Di 07.01.03 20:25 
hallo,

leider komme ich immernoch nicht weiter. In einem memofeld steht folgender teil einer html seite:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
 function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
  var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0;
  i<a.length; i++)
  if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a
  [i];}}

Ich möchte ab der Zeichenkette ("#") alle zeichen in ein label speichern, und zwar solange, bis die zeichenkette (p[j]) vorkommt. Der Inhalt der zu speichernden Zeichenkette kann auch von der Länge her variieren, also dynamsich sein.

wie stelle ich das am besten an. bin leider damit total überfordert.

danke vielmals.

jonas
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Di 07.01.03 22:14 
Hallo

pos, copy, memo.text heißen die Zauberwörter, die du in der onlinehilfe nachschauen kannst. klappt aber nur, wenn das ganze nur einmal im Text vorkommt, sonst wird es etwas schwieriger, aber machbar

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
bruder jonas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Mi 08.01.03 10:42 
Titel: hi frank, kommt ggf leider öfter vor
die zeichenkette zum durchsuchen.

welche zauberwörter muss ich dann verwenden??

danke
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 08.01.03 11:12 
Hallo,

schau Dir am besten erstmal die Hilfe zu den o. g. Befehlen an. Bei weiteren Fragen einfach posten!

Gruß
TINO
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.01.03 11:32 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
begin
  s := Memo1.Lines.Text;
  if Pos('#', s) > 0 then begin
    Delete(s, 1, Pos('#', s));
    if Pos('p[j]', s) > 0 then s := Copy(s, 1, Pos('p[j]', s) - 1);
  end else ShowMessage( 'Fehler! "#" nicht gefunden' );;
  ShowMessage( s );
end;


Ungeprüft aus den Kopf
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mi 08.01.03 12:00 
in deinem Titel der antowrt steht noch

Zitat:

kommt ggf leider öfter vor

dann kannst du wie Popov in seiner Lösung den memotext erstmal in einer string-variablen ablegen.
Pos liefert dir immer das erste vorkommen zurück. also kannst du in einer while Schleife solange durchlaufen, bis kein "x" mehr gefunden wurde.
innerhalb der Schleife kannst du dann popovs Code einsetzen und anschließend löschst du dann mit delete alle Zeichen vom String bis zum letzten Pos('p[j]') (länge von p[j]' dazuaddieren). (so wie Popov, dort werden auch alle Zeichen bis zum # glöscht und dann wird weitergesucht)
wenn die while schleife dann wieder durchlaufen wird, liefert dir Pos('#') wieder das "nächste" #-Zeichen im Text

Zitat:

Ich möchte ab der Zeichenkette ("#") alle zeichen in ein label speichern,

macht dann in einem Label aber keinen großen Sinn, wenn es mehrere Vorkommen gibt

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.01.03 12:22 
Folgender Code sucht aus einer HTML-Seite die Links raus, müßtest du nur noch für deine Bedürfnisse anpassen.
ausblenden volle Höhe 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:
procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
   s, s1, s2: String;
begin
  i := 0;
  Listbox1.Clear;
  s2 := Memo1.Text;
  { so lange 'http://' gefunden wird ist pos() > 0 }
  while pos('http://', s2) > 0 do
  begin
    { kopieren der Zeichenfolge ab 'http://' bis zum ersten Vorkommen von '"'
    -> Linkende }
    while s1 <> '"' do
    begin
      Inc(i);
      { immer 1 Zeichen nach s1 kopieren }
      s1 := copy(s2, pos('http://', s2)-1+i, 1);
      { Überprüfen, ob s1 = ", wenn true Schleife verlassen }
      if s1 = '"' then break;
      { Zusammensetzten des Links }
      s := s + s1;
    end;
    { Hinzufügen des Links der in s steht in die Listbox }
    Listbox1.Items.Add(s);
    { Da pos() inmer nur das erste Vorkommen eines Teilstrings in einem String
    findet, wird der Text bis nach dem ersten Vorkommen abgeschnitten }
    s2 := copy(s2, pos('http://', s2)+Length(s), Length(Memo1.Text));
    { Zurücksetzen der Variablen }
    s := '';
    s1 := '';
    i := 0;
  end;
  Label1.Caption := IntToStr(ListBox1.Items.Count)+ ' Links gefunden';
end;
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.01.03 13:16 
Hat jetzt mit dem eigentlichen Thema nichts zu tun, aber zum suchen von Links ist der Code nur zu Teil geeignet. Der sucht nach HTTP, viele Links fangen aber auch mit WWW an (auch wenn es eigentlich falsch ist). Aber auch Teillinks (z.B. nur ein Ordner) wird hier nicht beachtet.

Besser wäre also die Suche nach HREF und dann den String innerhalb der Anführungszeichen rausfiltern.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.01.03 14:20 
Ich weiß aber für die damaligen Zwecke hat es gereicht. Desweitern will er ja sowieso nach was ganz anderem suchen.