myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [Delphi] Fehlersuche (https://mygully.com/showthread.php?t=2575942)

Eldorado93 21.02.12 18:59

[Delphi] Fehlersuche
 
Hi,
Ich hab hier irgendwo einen Fehler im Code, finde ihn aber iwie nicht.
Link[n] wird einfach nicht mit einem String gefüllt.
Die Gesuchten wörter kommen eindeutig immer vor.

Code:

var RString:String;
var link:array [1..10] of String;
var i,k,m,n:integer;
begin
  n:=0;                                               
  for i:=1 to length(RString) do
  begin
    if (RString[i]='d') and (RString[i+1]='l') and (RString[i+2]='i') and (RString[i+3]='n') and (RString[i+4]='k') and (RString[i+5]='s')  then begin
    inc(n);
    m:=1;
    link[n]:='';
    while (RString[i+m] <> 't') and (RString[i+m+1] <> 'i') and (RString[i+m+2] <> 't') and (RString[i+m+3] <> 'l') and (RString[i+m+4] <> 'e') and (RString[i+m+5] <> '=') do inc(m);
    for k:=i to m do link[n]:=link[n]+RString[i+k];
    ShowMessage(link[n]);
    end;
  end;

Viele Grüße
Eldorado

Zeodos 21.02.12 19:16

hmm.. was steht denn in RString? Du erstellst RString ja neu, füllst die Variable aber nie mit Inhalt.. ?!

Eldorado93 21.02.12 19:26

achja, jaa das hab ich hier raus gelassen, ja in RString steht das richtige drinn, also so das m und i nicht ins unendliche laufen

kalliknuddel 22.02.12 10:02

tuuuuut
 
Also, dann erklärn wir dir deinen eigenen Code...
Also er springt in die erste Schleife rein und..
Code:

    if (RString[i]='d') and (RString[i+1]='l') and (RString[i+2]='i') and (RString[i+3]='n') and (RString[i+4]='k') and (RString[i+5]='s')  then begin
    inc(n);
    m:=1;
    link[n]:='';

..überprüft ob ab der Aktuellen Position der String 'dlinks' steht.
Wenn ja, dann
- Inkrementier n (ich nehm and das soll die Anzahl an funden und der momentane Index für link[] sein
(Da gibts das erste Problem: Das erste Element das du beschreibst ist link[1] und nicht link[0] ;))
- Setzt m = 1
- initialisiert link[n] mit ''
Soweit so gut, jetz wirds witzig

Code:

    while (RString[i+m] <> 't') and (RString[i+m+1] <> 'i') and (RString[i+m+2] <> 't') and (RString[i+m+3] <> 'l') and (RString[i+m+4] <> 'e') and (RString[i+m+5] <> '=') do inc(m);
Zur while-Schleife:
- du überprüfst den String ab i (die Position ab der im String 'dlink' steht!) + m (beim ersten mal 1) + constante.. ich nehme an du willst solang durchlaufen wie nicht 'title=' an der Position im String steht aber das geht schief.. was meinste passiert bei 'aitle'? (dummes Beispiel aber ich hoffe du weißt worauf ich hinaus will)

Und zu guter letzt der eigentliche Hammer:
Code:

    for k:=i to m do link[n]:=link[n]+RString[i+k];
    ShowMessage(link[n]);

Also k=i und soll dann solange hochgezählt werden wie k<m..
Jetz überleg nochma scharf was m eigentlich war...


Zu guter letzt noch eine Hilfe zum suchen nach Substring: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Sodale, ne Lösung bekommste nicht, dafür sollteste jetzt genug wissen um die Fehler seblst auszumerzen^^ (wenn du weiter Hilfe brauchst schreib ne PM.. :P)
In diesem Sinne, Viel Erfolg beim Ausbesern^^

Eldorado93 22.02.12 16:38

ich bin so blind -.-
Aber viele herzlichen dank, ich guck da schon seid ca 2 tagen drauf und fand den fehler net -.-


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.