Lazarus i użycie nazwy zastrzezonej.

0

Witam wszystkich.
Używam CreateOleObject('InsERT.GT')
następnie standardowo przekazuję dane i tu powstaje problem gdyż musze przekazania wartość a.operator:='admin', a słowo "operator" jest zastrzeżone.

Czy można to zrobić inaczej ?

6
a.&operator := 'admin';

Operatora & można używać do wszystkich identyfikatorów, które pokrywają się z zastrzeżonymi słowami kluczowymi – edytor kodu w najnowszej wersji IDE dodaje je automatycznie z poziomu code insight, nie tak jak było w poprzedniej wersji, w której operator ten trzeba było dodawać ręcznie we wszystkich miejscach, gdzie był konieczny.

Jednak należy pamiętać, aby nie tworzyć takich identyfikatorów bez potrzeby. Wsparcie tego operatora zostało wprowadzone głównie dla zapewnienia wstecznej kompatybilności ze starym kodem napisanym przy użyciu starych dialektów, w których wiele ze współczesnych keywordów nie było zastrzeżonych (w tym właśnie słówko operator).

0

Dziękuję za wyjaśnienie, zapamiętam na przyszłość.
Teraz coś innego. Obiekt OLE ma atrybut NumerOryginalny
z dokumentacji wynika że jest to string. > (Numer dokumentu ... Długość łańcucha znakowego wynosi 30 znaków. Wartość NULL nie jest dopuszczona)
Nadaję mu wartość ciąg znaków + wartość pola bazy ('ciagZnakow+Qord.FieldByName('id_order').AsString) i w wyniku otrzymuje:
screenshot-20201011232444.png
Gdy nadam wartość tylko z pola bazy danych, atrybut akceptuje stringa. Akceptowana jest też wartość przypisana z ''.
Jednak gdy zmiennej typu string przypiszę np. 'test'+Qord.FieldByName('id_order').AsString, a następne wartość tej zmiennej przypisze atrybutowi obiektu, otrzymuje załączony wyjątek.

O co tu chodzi ?

0
karpiu13 napisał(a):

Nadaję mu wartość ciąg znaków + wartość pola bazy ('ciagZnakow+Qord.FieldByName('id_order').AsString) i w wyniku otrzymuje: […]

A co dokładnie zwraca Qord.FieldByName('id_order').AsString? Może wynikiem jest zbyt długi ciąg znaków, stąd wyjątek – sprawdź pod debuggerem. Nie znam się na OLE, nie używałem i nadal nie używam, więc niewiele w tym temacie mogę doradzić.

0

Na pewno string? Zwykle w Pascalu / Delphi nie jest dobrym pomysłem przekazywanie do zewnętrznych aplikacji / dll / ocx itd. łańcuchów znaków tego typu. Spróbuj może np. Variant?

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