Rozwalanie stringa na części?

0

Siema!
W Memo1 mam taką linię stringa:

[code]component="Edit1" /component[/code]

Chcę wykryć co jest w cudzysłowie w mniej więcej taki sposób (robię co mogę aby nie było problemów które opiszę później):

sssddd := Length(Copy(Memo1.Lines[0], Pos('component="', Memo1.Lines[0]) + 12, Pos('" /component', Memo1.Lines[0]) - 11));
sssddd1 := Copy(Memo1.Lines[0], Length(Memo1.Lines[0]) - Pos('component="', Memo1.Lines[0]) - 15, Length(Memo1.Lines[0]) - Length('" /component') - 11);
ShowMessage('sssddd1: ' + sssddd1);</delphi

Funkcja Pos2 jest taka:

<delphi>function TForm1.Pos2(_String_ : String; _Text_ : String; int : Integer; minus : Integer) : integer;
var
i : Integer;
znaleziono : Integer;
begin
i:=1;
znaleziono:=0;
repeat
if _String_[i] = _text_ then inc(znaleziono);
inc(i);
if znaleziono = int then result := i -minus;
until znaleziono = int;
end;

Wiem że to nie działa za dobrze, bo ciągle przy tym majstrowałem (przy kodzie rozkładającym stringa) ale chcę to zrobić tak, aby nie występowały takie błędy:

1.jeżeli przed lub po tekście [code]component="Edit1" /component[/code] wystąpi np. asd albo jakieś słowo lub cyfra to ciągle tekst ma być Edit1 (najtrudniejsze).
2.Chcę, aby to działało, nawet jeśli tekst będzie inny niż Edit1 (trochę trudne).
3.Chcę aby to działało (łatwe)

Męczę się z tym już 2 dzień.

0

Zalozenie Podaje pierwsze wystapienie pomiedzy znakami, musi istniec znak zamykajacy i otwierajacy no i musi istniec cos pomiedzy tymi znakami.

function DajStringPomiedzy(Co: String; Znak: Char):String;
var
  i: Word;
begin
  i:=Pos(Znak, Co)+1;
  Result:='';
  repeat
    Result:=Result+Co[i];
    i:=i+1;
  until Co[i]=Znak;
end;
0

Sorry foflik, ale nie mogę znaleźć dobrego zastosowania t twojej funkcji.
Dobra, będę próbował dalej...

  • user image - ŁF
0

Sorry foflik, ale nie mogę znaleźć dobrego zastosowania t twojej funkcji.

Przecież funkcja foflika rozwiązuje wszystkie 3 twoje problemy!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1