Konwersja stringa na TMemoryStream

0

Witam,

mam funkcję, która pobiera z bazy postgres dane graficzne w formacie WKB.
Używam Borlanda C++, wszystkie dane z bazy zapisywane są do:

TMemoryStream* mStr = new TMemoryStream();

Z innego źródła dostaję strumień WKB w postaci stringa.
W jaki sposób zapisać tego stringa do TMemoryStream?
Potrzebna jest chyba jakaś konwersja,
proszę o jakieś sugestie.

Pozdrawiam.

0

Użyj: TStringStream

0

Kiedy robie tak:

AnsiString res("010300002084080000010000000E0000007B14AEC74699244152B");
TStringStream* pss = new TStringStream(res);

mam:

[bcc32 Error] Unit1.cpp(142): E2015 Ambiguity between '_fastcall System::Classes::TStringStream::TStringStream(const System::UnicodeString) at c:\program files (x86)\embarcadero\studio\19.0\include\windows\rtl\System.Classes.hpp:1957' and '_fastcall System::Classes::TStringStream::TStringStream(const System::AnsiStringT<65535>) at c:\program files (x86)\embarcadero\studio\19.0\include\windows\rtl\System.Classes.hpp:1958'
0

Ma być WideString, zwyczajnie skonwertuj.

0

Ja dane otrzymuję w postaci:

 AnsiString WKBstr("0133212123421");

jest przykład: http://programowanie.cal.pl/cyfbar/curious.html

gdzie wydawało mi się jest rozwiązanie mojego problemu:

 void StringToComponent(TComponent *c, AnsiString as)
{
 TMemoryStream* pms = new TMemoryStream();
 TStringStream* pss = new TStringStream(as);

 try
 {
  ObjectTextToBinary(pss, pms);
  pms->Seek(0, soFromBeginning);
 }
 catch(...)
 {
  ShowMessage("Błąd strumienia danych");
 }

 pms->ReadComponent(c);
 delete pms;
 delete pss;
}

ale funkcja: ObjectTextToBinary(pss, pms); wywala wyjątek.
Nie wiem już jak to poprawnie wykonać.

0
void StringToComponent(TComponent *c, AnsiString as)
{
 TStringStream *pss=new TStringStream(as);
 pss->ReadComponent(c);
 delete pss;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1