Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с функцией AnsiToNative из C++Builder'a / 5 сообщений из 5, страница 1 из 1
28.10.2004, 06:55
    #32758238
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с функцией AnsiToNative из C++Builder'a
Написал программу на C++Builder, которая делает некоторые проверки и выдает отчет в виде текстового файла. Файл получается (естественно) в кодировке Win.
На компьютерах пользователей, кому отправляют отчет, может стоять и "чистая" DOS. Кроме того, надо расчитывать на наличие бабулек, умеющих нажимать только F3 в Нортоне и приходящих в шок от самой необходимости работать не компьютере
Теперь собственно вопрос:
В хелпе к C++Builder нашел, что подобные преобразования (Win->DOS) можно выполнить функцией AnsiToNative, но примера ее использования там нет. А сам я не "догоняю" с параметрами, которые надо ей передать
Помогите, плз!!!
...
Рейтинг: 0 / 0
28.10.2004, 08:22
    #32758267
_Sania
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с функцией AnsiToNative из C++Builder'a
Лучше использовать CharToOem:

HELP
The CharToOem function translates a string into the OEM-defined character set. (OEM stands for original equipment manufacturer.) This function supersedes the AnsiToOem function.

BOOL CharToOem(
LPCTSTR lpszSrc, // pointer to string to translate
LPSTR lpszDst // pointer to translated string
);


Parameters lpszSrc
Pointer to the null-terminated string to translate.
lpszDst

Pointer to the buffer for the translated string. If the CharToOem function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if CharToOem is being used as a wide-character function.

Return Values

The return value is always nonzero.


Можно использовать и AnsiString, т.е. например есть строка src и ее надо перегнать в cp866:

Код: plaintext
1.
2.
AnsiString dest = src; // Для выделения буфера, можно и по-другому сделать
CharToOem(src.c_str(), dest.c_str());

Ну и конечно консоль должна быть настроена на cp866.
...
Рейтинг: 0 / 0
28.10.2004, 08:36
    #32758274
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с функцией AnsiToNative из C++Builder'a
_SaniaЛучше использовать CharToOem:...
Я конечно дико извиняюсь, но разве CharToOem не из VC++? Это я тоже прочитал в MSDN'e...

А я пишу на Билдере, там такие штучки не описаны...
Там написано следующее:
Borland C++Builder Help
AnsiToNative

Converts an AnsiString from the ANSI character set to the character set associated with a given locale.

extern PACKAGE char * __fastcall AnsiToNative(void * Locale, const AnsiString AnsiStr, char * NativeStr, int MaxLen);

Description

Call AnsiToNative to convert a string represented in the ANSI character set (used internally by Windows) to the character set associated with the database locale specified by the Locale parameter. The resulting string is copied into the buffer pointed to by the NativeStr parameter. Use the MaxLen parameter to specify the size of this buffer. If the buffer is too small to contain all characters in the converted version of AnsiStr, the returned value is truncated. AnsiToNative returns a pointer to NativeStr.

Use AnsiToNative to convert strings typed by the user into the character set used by a database table.

Вот меня и интересует пример использования этой функции, особенно в части задания void *Locale...
...
Рейтинг: 0 / 0
28.10.2004, 08:51
    #32758288
_Sania
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с функцией AnsiToNative из C++Builder'a
Можешь не извиняться , это из WinApi, и использовать ее можно и BCB.

OemToChar и OemToCharBuf использовать проще, к томуже OemToCharBuf может перегнать сразу весь файл (ну если он в пределах пары мегабайт) и не надо с отдельными строками парится.
...
Рейтинг: 0 / 0
28.10.2004, 09:31
    #32758348
Станислав C.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с функцией AnsiToNative из C++Builder'a
_SaniaМожешь не извиняться , это из WinApi, и использовать ее можно и BCB.

OemToChar и OemToCharBuf использовать проще, к томуже OemToCharBuf может перегнать сразу весь файл (ну если он в пределах пары мегабайт) и не надо с отдельными строками парится.
Thanks! It's cool!!!
Однако, "если звезды зажигают, значит это кому-нибудь нужно"...
Поэтому, все-таки, хотелось бы услышать ответ по сабж... Так, для увеличения образованности
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите с функцией AnsiToNative из C++Builder'a / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]