Форум программистов, компьютерный форум CyberForum.ru

Непонятности со строками - C++

Восстановить пароль Регистрация
 
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
24.02.2011, 10:11     Непонятности со строками #1
Возникла проблема не могу понять с какой стороны ее решить.

Работающий код:
C++
1
2
3
4
...
url = "http://www.site.ru/this.html";
file = InternetOpenUrl(session, url, 0, 0, 0, 0);
...
Не работающий код:
C++
1
2
3
...
file = InternetOpenUrl(session, Edit2->Text.t_str(), 0, 0, 0, 0);
...
По любому программа компилируется, но при выполнении второго варианта С++ Builder 2010 выдает "Project Project2.exe raised excaption class EAccessViolation with message 'Access Violation'"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2011, 10:11     Непонятности со строками
Посмотрите здесь:

Робота со строками в с++ 3.1 C++
Работа со строками в С++ C++
C++ Работа с строками
C++ Работа со строками в С++
Работа со строками C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.02.2011, 11:00     Непонятности со строками #2
C++
1
Edit2->Text.с_str()
?
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
24.02.2011, 11:10  [ТС]     Непонятности со строками #3
Так даже компилироваться не хочет.

[BCC32 Error] Unit2.cpp(45): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit2.cpp(22): parsing: void _fastcall TForm2::Button1Click(TObject *)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.02.2011, 11:22     Непонятности со строками #4
C++
1
url = L"http://www.site.ru/this.html";
попробуй с прежним t_str()
CyberHunter
12 / 12 / 1
Регистрация: 03.08.2010
Сообщений: 61
24.02.2011, 11:25     Непонятности со строками #5
Edit2 - это у Вас класс, или едитбокс?
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
24.02.2011, 11:37  [ТС]     Непонятности со строками #6
Цитата Сообщение от accept Посмотреть сообщение
C++
1
url = L"http://www.site.ru/this.html";
попробуй с прежним t_str()
это я что-то не понял.

Цитата Сообщение от CyberHunter Посмотреть сообщение
Edit2 - это у Вас класс, или едитбокс?
едитбокс
CyberHunter
12 / 12 / 1
Регистрация: 03.08.2010
Сообщений: 61
24.02.2011, 11:41     Непонятности со строками #7
Как-то видел, что у людей возникают проблемы с кодировкой, похоже там юникод. Попробуйте функцию AnsiToOem(), если мне не изменяет память...
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
24.02.2011, 13:19  [ТС]     Непонятности со строками #8
Цитата Сообщение от CyberHunter Посмотреть сообщение
Как-то видел, что у людей возникают проблемы с кодировкой, похоже там юникод. Попробуйте функцию AnsiToOem(), если мне не изменяет память...
Выходит ошибка:
[BCC32 Error] Unit2.cpp(42): E2268 Call to undefined function 'AnsiToOEM'
Full parser context
Unit2.cpp(21): parsing: void _fastcall TForm2::Button1Click(TObject *)

я так полагаю из-за отсутствия нужного хедера?
У меня подключено:
#include <vcl.h>
#include <fstream.h>
#include <windows.h>
#pragma link "wininet.lib"

в каком хедере распологается эта функция, если в этом проблема?

Добавлено через 40 минут
Всем спасибо, заработали в таком составе:

C++
1
2
3
4
5
...
char *url;
url = new char[127];
CharToOem(Edit2->Text.t_str(), url);
...
Над этими строкаи в с++ явно что-то перемудрили, в делфи было намного проще.
CyberHunter
12 / 12 / 1
Регистрация: 03.08.2010
Сообщений: 61
24.02.2011, 19:52     Непонятности со строками #9
Цитата Сообщение от Zubossi Посмотреть сообщение
CharToOem
- в точку!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2011, 05:16     Непонятности со строками
Еще ссылки по теме:

работа со строками C++
Непонятности с корнем n степени C++
C++ Три непонятности: память в union, указатель на функцию и ->

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.02.2011, 05:16     Непонятности со строками #10
Цитата Сообщение от Zubossi
это я что-то не понял.
Код
Cannot convert 'wchar_t *'
wchar_t * подразумевает широкосимвольную строку, которая задаётся с L
широкосимвольная строка - строка состоящая из широких символов, а широкий символ - это многобайтовый символ
C
1
url = "http://www.site.ru/this.html";
это строка однобайтовых символов, так как в ней нет L
Yandex
Объявления
25.02.2011, 05:16     Непонятности со строками
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru