|
|
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Добрый день. Появилась тут у меня загадочная проблема, вроде недавно работало а тут поломалось при каких-то видимо моих изменениях кода. Но, как я помню, что касается этого ничего не менял, но чудес не бывает. В общем так: Создаю простой комбо с привязанными к элементам объектами Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. и вот в коде в другом модуле мне надо получить значение строки в объекте по выбранному элементу комбо qRules.FieldByName('Role').AsString := (fRules.cbRoles.Items.Objects[fRules.cbRoles.Items.IndexOf(qRules.FieldByName('RoleName').AsString)] as TStringObj).pStr.sValue; проверяю - значение qRules.FieldByName('RoleName').AsString верное но в результате получаю ошибку invalid class typecast понимаю что это неправильное приведение типов классов, но почему неясно, может кто подскажет. Спасибо. Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 10:41:15 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968, fRules.cbRoles.Items.Objects[fRules.cbRoles.Items.IndexOf(qRules.FieldByName('RoleName').AsString)].ClassName - что покажет? Ну и просто Assigned проверь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 10:50:31 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Проверил fRules.cbRoles.Items.Objects[fRules.cbRoles.Items.IndexOf(qRules.FieldByName('RoleName').AsString)].ClassName как ни странно равно TStringObj - чудеса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 11:08:37 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968, DLL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 11:44:04 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Что DLL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 11:48:39 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Если имеется ввиду программирую DLL? то нет - разработка Web-приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 11:50:19 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968и вот в коде в другом модуле мне надо получить значение строки в объекте по выбранному элементу комбо qRules.FieldByName('Role').AsString := (fRules.cbRoles.Items.Objects[fRules.cbRoles.Items.IndexOf(qRules.FieldByName('RoleName').AsString)] as TStringObj).pStr.sValue; проверяю - значение qRules.FieldByName('RoleName').AsString верное но в результате получаю ошибку invalid class typecast понимаю что это неправильное приведение типов классов, но почему неясно, может кто подскажет. Спасибо. Другой модуль в том же исполняемом файле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:11:53 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
да конечно и в том же исполняемом модуле и в том же проекте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:13:29 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Зачем все эти танцы? Вполне можно обойтись записью без всякого класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:35:31 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
подскажите, пожалуйста, как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 12:51:05 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968да конечно и в том же исполняемом модуле и в том же проекте Возможно код стоит разнести по нескольким операторам, смотря в отладчике ход операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 13:26:33 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Разнес следующим образом Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. на всех операциях значения верные на последнем операторе естественно та же ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:35:42 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968подскажите, пожалуйста, как? как вариант Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. и не забыть Dispose( ... ) хотя для одной буквы можно еще проще Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 14:45:07 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968Разнес следующим образом var p,p1,p2 : string; i : integer; str_ : TObject; ... P := qRules.FieldByName('RoleName').AsString; i := fRules.cbRoles.Items.IndexOf(p); p1 := fRules.cbRoles.Items.Objects[i].ClassName; str_ := fRules.cbRoles.Items.Objects[i]; p2 := (str_ as TStringObj).sStr.sValue; на всех операциях значения верные на последнем операторе естественно та же ошибка Код: pascal 1. 2. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 15:21:48 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
patrick1968, А TStringObj у Вас объявлен в одном месте? Или по проекту есть несколько определений этого класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:14:39 |
|
||
|
Приведение типов в классах
|
|||
|---|---|---|---|
|
#18+
Если повторить ваш код в чистом виде, то все работает. Значит проблема именно в приложении. Проверьте какие еще модули подключены - может есть одноименная переменная еще где-то. Смутил еще вот этот момент: и вот в коде в другом модуле мне надо получить значение строки в объекте по выбранному элементу комбо qRules.FieldByName('Role').AsString := (fRules.cbRoles.Items.Objects[fRules.cbRoles.Items.IndexOf(qRules.FieldByName('RoleName').AsString)] as TStringObj).pStr.sValue; но здесь комбобокс cbRoles используется только как контейнер с данными и абсолютно пофиг, что там в нем выбрано. Может проще запросом сразу сделать обновление qRules.Role исходя из qRules.RoleName ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2017, 16:24:22 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2041891]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 371ms |

| 0 / 0 |
