rabby - Di 27.01.04 18:06
Titel: schleifen => alles mit allem...
hallo welt !
ziel: => ermitteln des geringsten abstands zwischen mehreren (2+) strings in nem großen text.
hab in delphi ne funktion angefangen, die mir alle vorkommnisse jedes einzelnen der suchbegriffe ermittelt und in arr:array[0..100, 0..100] of string ablegt
dabei ist arr[i][ 0 ] immer der gesuchte begriff, d.h. arr[i][j+1] sind die positionen.
soweit klappts auch schon...
aber danach soll das zeugs ausgewertet werden bzw alle möglichkeiten sollen versucht werden, sodass der geringste abstand ermittelt wird.
hierfür hab ich mir mal folgende schleifenanreihung gebastelt:
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: 27: 28: 29: 30: 31: 32: 33: 34:
| for i := 01 to suchworte.count do begin if(arr[i][j]<>'') then begin abstand_min:=length(sa); kl:=length(txt.text); gr:=0; for j := 01 to 100 do begin
if(arr[i][j]<>'') then begin for k := 01 to 100 do begin if(arr[k][0]<>'') then begin for l := 01 to 100 do begin if(arr[k][l]<>'') then begin wert:=strtoint(arr[k][l]); if(kl>wert)then kl:=wert; if(gr<wert)then gr:=wert; end; end; end; abstand_min:=(gr-kl); end; end; end; end; end; showmessage(inttostr(kl)+' - '+inttostr(gr)); showmessage(inttostr(abstand_min)); |
dabei musste ich leider feststellen, dass der größte vorkommende abstand ermittelt wird :-(
schade !
wie/was muss geändert werden, sodass der geringste abstand herausgefunden wird?
ich glaub der code is relativ einfach zu verstehen, ... -hoff ich zumindest...
bitte helft,
danke !
Moderiert von
Peter Lustig: Topic Verschoben
rabby - Di 27.01.04 20:42
hier noch ein beispiel:
text: abc def abc xyz abc def xyz
1.teilstring: ab
2.teilstring: yz
dabei sieht der arr dann so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| arr[0][0]:='ab'; arr[0][1]:='1'; arr[0][2]:='8'; arr[0][3]:='16';
arr[1][0]:='xy'; arr[1][1]:='13'; arr[1][2]:='25'; |
wenn man nun alle varianten versucht, so sollte die schleife feststellen, dass 5 der geringste abstand ist (arr[0][8] und arr[1][13]).
was mich nun interessiert is, wie man alle varianten durchprobiert, wenn es MEHR als 2 teilbegriffe sind.
also
arr[2][0]:='f';
nun muss auch noch berücksichtigt werden, dass auch dieser string dazwischen vorkommt...
weiß denn niemand rat?
Moderiert von
Peter Lustig: Delphi-Tags hinzugefügt