|
|
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
К сожалению, в найденной мною литературе я не нашел ответа на этот вопрос. Зато опытно выяснил, что, к примеру String инициализируется как .F. - почему? Я пишу на фоксе сервер для сторонней программы, которая вызывает собственные етоды описанные в созданном классе (в фоксе). Примерно так: код... LOCAL somethingValue AS String ... obj.GetSomethingByName ('Name', @somethingValue) ... где GetSomethingByName собственный метод внешней программы. Передаю этому методу входное значение 'Name', а вот на выходе somethingValue вместо ожидаемого мною строкового значения выдает .F., т.е. то, чем она была инициализирована по умолчанию. Метод 100% рабочий, и у меня есть сомнения, может здесь как-то замешаны типы? При программировании в .NET похожая проблема решалась таким образом: кодsomethingValue = Nothing а как можно поступить в Fox Pro ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:13 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Скорее всего, вам не известно, что в Фоксе у переменных нет жесткого типа данных, т.е. a=.F. - логическая затем можно дать a="my text" - теперь "а" стала строковая затем а=34.2 - ну теперь число Поэтому ФАКТИЧЕСКИЙ тип переменной определяется при ее присвоении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:34 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
SibirjakК сожалению, в найденной мною литературе я не нашел ответа на этот вопрос. Зато опытно выяснил, что, к примеру String инициализируется как .F. - почему? Я пишу на фоксе сервер для сторонней программы, которая вызывает собственные етоды описанные в созданном классе (в фоксе). Примерно так: код... LOCAL somethingValue AS String ... obj.GetSomethingByName ('Name', @somethingValue) ... где GetSomethingByName собственный метод внешней программы. Передаю этому методу входное значение 'Name', а вот на выходе somethingValue вместо ожидаемого мною строкового значения выдает .F., т.е. то, чем она была инициализирована по умолчанию. Метод 100% рабочий, и у меня есть сомнения, может здесь как-то замешаны типы? При программировании в .NET похожая проблема решалась таким образом: кодsomethingValue = Nothing а как можно поступить в Fox Pro ? ВладимирМ тут недавно объяснял. Но повторю еще раз кратко: 1. ВСЕ ПЕРЕМЕННЫЕ в Фоксе имеют тип Variant, т.е. любая переменная в один момент времени может быть символьной, а в другой момент - числовой или логической (булевой). 2. Гарантировать, что переменная имеет именно тот тип, который нужен программисту, можно ТОЛЬКО явным присваиванием. Т.е. для твоего случая необходимо написать примерно так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:40 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! К сожаление, метод так и не хочет возвращать результат. Будет копаться дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:49 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
авторVariant is a special data type that can contain any kind of data except fixed-length string data. Variant data can also be the special values Empty, Error, and NULL. This data type is used in extrinsic clients to Visual FoxPro applications because Visual FoxPro is not a strongly typed language . Поэтому, надо явно присвоить Код: plaintext 1. что бы получить нужный тип инициализация должна пройти через явное присвоение Код: plaintext 1. 2. 3. НО как уже сказал Andrey Ts переопределить переменную ничего не стоит, если это критично, то надо работать с типами данных полей курсоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 09:52 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
надо работать с типами данных полей курсоров каким образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:08 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
добавлю еще один момент который здесть упустили про переменные: a='' не гарантирует что размер этой переменной например 20 символов если ваш метод требует переменную в 20 символов то лучше определить ее так Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:26 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
DEFINE CLASS MeClass AS form OLEPUBLIC Procedure init create cursor test (f1 c(254), f2 i, f3 M) append blank in test endproc Procedure GetName return test.f1 && вернет символьное значение endproc ENDDEF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:33 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
[quot S866] если ваш метод требует переменную в 20 символов то лучше определить ее так[quot] метод не требует, он возвращает, но в любом случае размер здесь не критичен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:56 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
PaulWistDEFINE CLASS MeClass AS form OLEPUBLIC ... все здорово, но только здесь вызывается собственный метод, а в моем случае используется внешний метод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 13:59 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sibirjak PaulWistDEFINE CLASS MeClass AS form OLEPUBLIC ... все здорово, но только здесь вызывается собственный метод, а в моем случае используется внешний метод. Ну определи в собственном методе фокс-обьекта принимаемый параметр Код: plaintext 1. 2. 3. вот что ему на вход подашь, то на выходе получишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 14:12 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 15:07 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2006, 16:18 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
да return я позже вставил, без него тож не возвращается. А вот насчет кода метода - буду писать в саппорт :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 07:44 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sibirjakда return я позже вставил, без него тож не возвращается. А вот насчет кода метода - буду писать в саппорт :)) Как все "запущено" в очень простой программе Никогда не делал так как пытаетесь Вы. Всегда писал стандартно как в Help: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 09:33 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
???? Код: plaintext 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. 2Sibirjak. какой саппорт, Вы о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 09:47 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
авторВ FoxPro стандартно внешний метод может вернуть только одно значение... Код: plaintext ну дык одно значение и возвращается - lcValue ... А первый аргумент метод просто должен схавать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 10:04 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
в VB этот метод используется так: Код: plaintext fldIndex - передается в метод fieldValue - возвращаемое значение Я говорю, либо тут какие то неучтенные OLE-тонкости фокса, либо метод исходной программы по каким-то причинам не хочет работать именно с фоксом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 10:13 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sibirjak Код: plaintext ну дык одно значение и возвращается - lcValue ... А первый аргумент метод просто должен схавать... Так Вы пробовали мой код или alex11100 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 12:04 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sibirjakв VB этот метод используется так... В FoxPro немного другой синтакс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 12:05 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. 2Sibirjak? что здесь не так?? или нужно как в VB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 12:22 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sergey Ch Sibirjak Код: plaintext ну дык одно значение и возвращается - lcValue ... А первый аргумент метод просто должен схавать... Так Вы пробовали мой код или alex11100 ? ваш ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 13:29 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
2alex11100 пардон, а где OLEPUBLIC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 13:39 |
|
||
|
Чем по умолчанию инициализируются типы данных?
|
|||
|---|---|---|---|
|
#18+
Sibirjak ваш Работало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2006, 14:01 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34031717&tid=1590633]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 447ms |

| 0 / 0 |
