Program do zamiany słów w pliku na synonimy

0

Mam za zadanie napisac program, ktory przemienia kod źródłowy pewnego pliku X w nowy( edytowany) plik Y. Program zamienia pewne słowa na synonimy(okreslilem liste tych slow). Problem się pojawił, gdy chciałbym aby nie zamieniał słów w zdaniach, które zaczynają się od słowa "Gdy", a kończą na "późno" i jednoczesnie kolorowal je na czerwono w języku HTML. Wpadłem na pomysł, aby zrobić to na zasadzie true/false. Czyli jeśli znajdzie słowo "GDY" to ustawia zmienną typu boolean na true i wtedy nie wykonują się zmiany słów aż do słowa "późno" - każde zdanie zaczynające się na GDY kończy się na późno( w ramach tego zadania). Teraz nasuwa się pytanie jak to rozwiązać, bo program nie chce mi działać....
Używam formułki StringReplace().

ReadLn(plik, word); 
if word="Gdy" then
begin

 word := StringReplace(word, 'Gdy', '<font color="red">Gdy', [rfReplaceAll]);
TRYB_OFF=true;
end;
if word="późno" then
begin
 word := StringReplace(word, 'pozno', 'późno</font>', [rfReplaceAll]);
TRYB_OFF=false;
end;
IF TRYB_OFF=false then
begin

 word := StringReplace(word, 'program', 'kanal', [rfReplaceAll]);
(...) itp 
end;
0

Formatowanie kodu u Ciebie to porażka. Nie chcę mi się nawet tego analizować. I nazywanie zmiennej tak jak typ, też nie jest za dobrym pomysłem. Jeżeli możesz posłużyć się modułami VCL i nie chcesz tego robić w czystym WinAPI to posiłkuj się modułem do wyrażeń regularnych. Posiada on również możliwośc zamiany ciągów według wzorca. Moduł wraz z doukementacją i przykładami jest na: http://regexpstudio.com/TRegExpr/TRegExpr.html - pokombinuj.

0

Może mógłbyś z pliku wyciągać tekst fragmentami? Po prostu rozbijesz tekst na kilka części i części ze słowem "Gdy" i kończące się na "późno" olejesz przy edycji, a resztę zdań zmienisz funkcją StringReplace().
Funkcje Copy() (do kopiowania tekstu od pozycji x) i Pos() (do ustalania pozycji danego słowa) by ci się przydały, ewentualnie PosEx().

dodanie znaczników `` - fp

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