C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Преобразование типов, В одном из методов MapX
Лена
Отправлено: 24.08.2005, 10:14


Мастер участка

Группа: Участник
Сообщений: 501



В одном из методов компонента MapX, для картографии, есть метод Search, этот метод принимает указатель на тип wchar_t, т.е. прототип такой: Search (wchar_t * Address, …)
Мне надо передать в первый параметр этого метода значение хранящиеся в Table2->FieldValues["ID"].
Подскажите, как корректно преобразовать это выражение в тип указателя на wchar_t чтобы в методе Search оказалось то что нужно из Table2->FieldValues["ID"]?
Таблица dbf тип колонки number. Там находятся значения вида 6347903, 6338227 и т.д.

Код ниже не правельный:
int id = Table2->FieldValues["ID"]->AsInteger;
WideString wsid = WideString(id);
// Search(wsid.c_bstr()); будет использоваться для метода Search

На строке
int id = Table2->FieldValues["ID"]->AsInteger;
ошибка: Pointer to structure required on left side of -> or ->*


sad.gif
Admin
Отправлено: 24.08.2005, 10:20


Владимир

Группа: Администратор
Сообщений: 1190



Что касается именно этой ошибки -
или
CODE
int id = Table1->FieldValues["ID"];

или
CODE
int id = Table1->FieldByName("ID")->AsInteger;


Отредактировано Admin — 24/08/2005, 10:21
GIZMO
Отправлено: 24.08.2005, 10:53


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Лена @ 24/08/2005, 10:14)
Код ниже не правельный:
int id = Table2->FieldValues["ID"]->AsInteger;
WideString wsid = WideString(id);

Creates an instance of WideString.

__fastcall WideString(): Data(0) {}
__fastcall WideString(const char* src);
__fastcall WideString(const WideString& src);
__fastcall WideString(const AnsiString& src);
__fastcall WideString(const wchar_t* src, int len);
__fastcall WideString(const wchar_t* src);
__fastcall WideString(const wchar_t src);

Где __fastcall WideString(int Value);?
Лена
Отправлено: 24.08.2005, 12:20


Мастер участка

Группа: Участник
Сообщений: 501



Спасибо за советы!
Значит окончательно:

int id = Table2->FieldByName("ID")->AsInteger;
String sid = String(id);
WideString wsid = WideString(id);

Правильно?

Лена
Отправлено: 24.08.2005, 12:21


Мастер участка

Группа: Участник
Сообщений: 501



так:
int id = Table2->FieldByName("ID")->AsInteger;
String sid = String(id);
WideString wsid = WideString(sid);
GIZMO
Отправлено: 24.08.2005, 13:01


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Лена @ 24/08/2005, 12:21)
так:
int id = Table2->FieldByName("ID")->AsInteger;
String sid = String(id);
WideString wsid = WideString(sid);

А почему сразу не ->AsString?
Лена
Отправлено: 24.08.2005, 13:13


Мастер участка

Группа: Участник
Сообщений: 501



Значит так:
CODE

String sid = Table2->FieldByName("ID")->AsString;
WideString wsid = WideString(sid);

а если бы я хотела использовать не FieldByName а FieldValues, то тогда просто

String sid = Table2->FieldValues["ID"];
WideString wsid = WideString(sid);


Правильно?
GIZMO
Отправлено: 25.08.2005, 09:07


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Лена @ 24/08/2005, 13:13)
Значит так:
CODE

String sid = Table2->FieldByName("ID")->AsString;
WideString wsid = WideString(sid);

а если бы я хотела использовать не FieldByName а FieldValues, то тогда просто

String sid = Table2->FieldValues["ID"];
WideString wsid = WideString(sid);


Правильно?

Да.
olegenty
Отправлено: 25.08.2005, 09:24


Ветеран

Группа: Модератор
Сообщений: 2412



а можно и так (покороче запись получается):
CODE

   WideString wsid =  Table2->FieldByName("ID")->AsString;

Вернуться в Вопросы программирования в C++Builder