Witam!
Programuje program do szyfrowania/deszyfrowania danych i natrafiłem na dziwny problem.
W długim łańcuchu str występuje wiele spacji, ucinam kawałek łańcucha (Delate) po czym używam funkcji Pos, która o dziwo nie znajduje żadnej ww. spacji (wiem że na pewno są -> notatnik). Podglądam łańcuch, po operacji usuwania jego fragmentu, i widzę, że kończy się na pierwszej napotkanej, spacjii! np. było ?aaaabbbb cccc?, ucinam ?aaaa?, a zostaje tylko ?bbbb?! Co ciekawsze, jak dodam do mojego skróconego łańcucha + ' ', okazuje się, że wraca on do przewidywanej przeze mnie formy ?bbbb cccc?!? Nie wiem co myśleć i czy to przypadek. Jak zniwelować efekt samo ucinających się łańcuchów?? Program bawiący się z kodami wymaga dokładności, dziękuj.
P.S. Użyłem książek i szukaj, lecz magicznych spacji nie znalazłem.
var
F : textfile;
str : string;
p,k : integer; //pozycja w texcie
begin
AssignFile(F,'C:\proba.dat'); //tu jest zaszyfrawany plik
Reset(F);
Read(F,str);
p := Pos('proba234567',str); //początek ineresującego mnie fragmentu jest za tym kluczem
Delete(str,1,p+10); //10=-1+11
str:=str+' '; //dziwna funkcja "uzdrawiająca"
k := Pos(' ',str); //koniec interesujacego mnie fragmentu jest przed pierwszą spacją
Edit1.Text:=Copy(str,1,k-1); //napisz interesujący mnie fragment
If p=10 then Edit1.Text:='<brak danych>'; //jeśli mnie ma klucza - brak danych
Caption:=IntToStr(p) + '~~' + IntToStr(k) + '~~'+ str[p] + '~~'+ str + '~~'; //dzięki temu sprawdzam "co mn myśli"
end;
Urzywam D7 z gazetki ;D