wyszukiwanie znaku minuty

0

Potrzebuję określić pozycję znaku minuty (czyli ') w lini edytora.
Miał to robić kod :

var PosMin: integer;
begin;
 
PosMin:=Pos(''',Memo1.Lines[n]);

Jednak kompilator traktuje zapis ' jako undeterminet string - czyli błąd kodu.

Wobec tego jak należy zmienić zapis aby ' został potraktowany jako znak typu char?

1

Najprościej AFAIK #39. Albo "escapeować" jakby poprzedzając innym znakiem '. Teraz napisałem na szybko z pracy. I dlatego nie będe uruchamiał kompilatorów online i w nich sprawdzał, bo nie mam na to czasu. A spojrzałem na forum po przerwie to też odpisałem.

1

Prawidłowy zapis to użycie dwóch znaków zamiast jednego:

PosMin := Pos('''', Memo1.Lines[n]);

Jednak kompilator traktuje zapis ' jako undeterminet string - czyli błąd kodu.

Bo ten ciąg nie jest prawidłowo zakończony, co widać przez nieprawidłowe kolorowanie składni w tej linii; Dwa pierwsze znaki kompilator traktuje jako jeden, a trzeci oznacza dla niego początek literału; Czwartego brak, więc literał jest otwarty i sięga aż do końca linii; Brak zakończenia literału to jest składniowy, co kompilator ładnie zgłasza sensownym komunikatem.

0

Rzeczywiście z #39 działa dobrze :)

No. no, tego nie wiedziałem moderatorze :)

0

Wystarczy zapamiętać, że każda para sąsiadujących ze sobą znaków ' oznacza chęć użycia tego znaku w literale; Pozostałe (niesąsiadujące) traktowane są jako otwarcie lub zakończenie literału.

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