Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Indy Post


Автор: NFL 20.8.2011, 12:24
Код

TStrings *q = new TStringList();
TStringStream *s = NULL;
char * URL = "****";
q->Clear();
q->Add("code=1234");
IdHTTP1->Post(URL, q, s);


Далее все попытки обратиться к s->DataString увенчиваются Access violation :(

На самом запросе ошибок программа не сыплет. Как быть?

Автор: artsb 21.8.2011, 21:52
Код

TStrings *q = new TStringList();
TStringStream *s = new TStringStream(); // <----
char * URL = "****";
q->Clear();
q->Add("code=1234");
IdHTTP1->Post(URL, q, s);

Автор: NFL 22.8.2011, 11:06
artsb, ругается в таком случае, типа нету метода TStringStream::TStringStream() :(

Конечно еще раз проверю дома...

Автор: artsb 22.8.2011, 11:25
Цитата(NFL @  22.8.2011,  11:06 Найти цитируемый пост)
ругается в таком случае, типа нету метода TStringStream::TStringStream() :(

Такой конструктор должен быть. Из справки к BuilderXE:
Цитата

__fastcall TStringStream(void)/* overload */;
__fastcall TStringStream(const System::UnicodeString AString)/* overload */;
__fastcall TStringStream(const System::RawByteString AString)/* overload */;
__fastcall TStringStream(const System::UnicodeString AString, Sysutils::TEncoding* AEncoding, bool AOwnsEncoding)/* overload */;
__fastcall TStringStream(const System::UnicodeString AString, int ACodePage)/* overload */;
__fastcall TStringStream(const System::DynamicArray<System::Byte> ABytes)/* overload */;

Автор: NFL 22.8.2011, 23:44
Код

void __fastcall TForm1::N8Click(TObject *Sender)
{
TStrings *q = new TStringList();
TStringStream *s = new TStringStream();
char * URL = "http://ya.ru";
q->Clear();
q->Add("code=1234");
IdHTTP1->Post(URL, q, s);
}


Получаю:

  [C++ Error] Unit1.cpp(232): E2285 Could not find a match for 'TStringStream::TStringStream()'

C++ Builder 6

Автор: artsb 23.8.2011, 07:53
Цитата(NFL @  22.8.2011,  23:44 Найти цитируемый пост)
C++ Builder 6 

А. Ну тогда, поставьте курсор в круглые скобки конструктора TStringStream и нажмите Ctrl+Shift+Пробел и выберите подходящий конструктор.
Например,
Код

TStringStream *s = new TStringStream("");

пустая строка.

Автор: NFL 24.8.2011, 11:35
artsb, c пустой строкой заработало, спасибо  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)