HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 19.09.2008, 14:52
++Norton++
Участник форума
Регистрация: 20.11.2006
Сообщений: 172
Провел на форуме:
539954

Репутация: 106
По умолчанию

4p3
Да нет, компилятор ничего не преобразовывал . То что я привел, я согласен бред полнейший. Это я привел просто для примера, т.к. правильно сделать не знаю пока как. Вот и обращаюсь за помощью
 
Ответить с цитированием

  #2  
Старый 20.09.2008, 01:01
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
Отправить сообщение для 4p3 с помощью ICQ
По умолчанию

Цитата:
Сообщение от ++Norton++  
4p3
Да нет, компилятор ничего не преобразовывал . То что я привел, я согласен бред полнейший. Это я привел просто для примера, т.к. правильно сделать не знаю пока как. Вот и обращаюсь за помощью
вот выдалось время свободное

Код:
//---------------------------------------------------------------------------
#include <iostream>
#include <cstdlib>
#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------

void PrintVarArg(char** args, int nArgsCount)
{
        for (int i = 0;i < nArgsCount;++i)
                cout << args[i];
}

#pragma argsused
int main(int argc, char* argv[])
{
        char *szArgs[] = {"dalek", "kaled"};
        PrintVarArg(szArgs, 2);
        system("pause");
        return 0;
}
//---------------------------------------------------------------------------
 
Ответить с цитированием

  #3  
Старый 20.09.2008, 20:41
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Есть такой вопросик: почему не работает ф-я CharToOem() в Visual Studio2008(C++9), тоесть ругается с ошибкой
error C2664: 'CharToOemW' : cannot convert parameter 1 from 'char [7]' to 'LPCWSTR'

В С++ 6 все отлично работало, а тут не хочет, может кто знает в чем тут проблема?

char z[] = "ПревеД";
CharToOem(z,z);

Последний раз редактировалось horlyk; 20.09.2008 в 21:06..
 
Ответить с цитированием

  #4  
Старый 20.09.2008, 21:19
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
Отправить сообщение для 4p3 с помощью ICQ
По умолчанию

Юзай уникод, ВС9 заточена под уникод

wchar_t *wcString = L"Preved";
 
Ответить с цитированием

  #5  
Старый 20.09.2008, 21:47
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

а немного по подробнее можно? как к примеру вывести на консольный экран:
char z[] = "ПревеД";
puts(z);
чтобы на консоле отображало ПревеД а не хз что. А то я попробовал то что ты написал, так там цифры одни.
И еще, можно както глобально делать перекодировку в ср1251 без CharToOem()? а то немного напряжно постоянно использовать эту ф-ю для каждой переменной.
И все же, как тут правильно использовать CharToOem()? интересно всетаки что они изменили.
 
Ответить с цитированием

  #6  
Старый 20.09.2008, 22:25
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
Отправить сообщение для 4p3 с помощью ICQ
По умолчанию

horlyk, первый параметр CharToOem - источник, второй - приемник. Просто IMHO, я бы не совмещал их. Хз что может произойти, это, конечно, зависит от реализации.
Тем более NecroSoft MSDN вот что выдает
Цитата:
Return Value

The return value is always nonzero except when you pass the same address to lpszSrc and lpszDst in the wide-character version of the function. In this case the function returns zero and GetLastError returns ERROR_INVALID_ADDRESS.

Так... теперь немножко теории.

wchar_t это по сути дело тот же short. Потому, используя, cout ты получаешь на выходе цифры.

Теперь перейдет в "раздел как это решить".
использовать wcout. Он нормально вывод уникод. Можешь написать свою функцию, которая будет вызывать CharToOem и выводить. Можешь вызывать

setlocale(LC_ALL, "Russian");

она тоже ничего
 
Ответить с цитированием

  #7  
Старый 21.09.2008, 12:39
zindi
Участник форума
Регистрация: 11.04.2007
Сообщений: 219
Провел на форуме:
982101

Репутация: 13
По умолчанию

а лутше просто поставь в настройках проекта мульти байт код и должно работать.
 
Ответить с цитированием

  #8  
Старый 21.09.2008, 13:31
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

чет я немного не догоняю, wcout тож не хочет русские букви выводить.

wchar_t z[7] = L"ПревеД";
wcout << z << endl;

пробовал и просто чар. Плз, напишите ктото маленький примерчик.
 
Ответить с цитированием

  #9  
Старый 21.09.2008, 15:31
4p3
Участник форума
Регистрация: 18.08.2008
Сообщений: 159
Провел на форуме:
750247

Репутация: 92
Отправить сообщение для 4p3 с помощью ICQ
По умолчанию

Код:
#include <iostream>
#include "stdafx.h"

using std::wcout;

int _tmain()
{
	wchar_t *wcString = L"ненене";
	setlocale(LC_ALL, "Russian");
	wcout << L"дадада!" << L" " << wcString << std::endl;
	_wsystem(L"pause");
	return 0;
}
 
Ответить с цитированием

  #10  
Старый 24.09.2008, 23:00
horlyk
Участник форума
Регистрация: 02.12.2007
Сообщений: 132
Провел на форуме:
233095

Репутация: 21
Отправить сообщение для horlyk с помощью ICQ
По умолчанию

Цитата:
Сообщение от 4p3  
Код:
#include <iostream>
#include "stdafx.h"

using std::wcout;

int _tmain()
{
	wchar_t *wcString = L"ненене";
	setlocale(LC_ALL, "Russian");
	wcout << L"дадада!" << L" " << wcString << std::endl;
	_wsystem(L"pause");
	return 0;
}
В общем ошибка такая:

error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

когда убрал _t и оставил просто main, то ошибка исчезла.
При компиляции ошибок небыло, а вот при дебаге или запуске...
спс за помощь
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ