Umknęło mi to. Różnie kombinowałem, ale o tym nie pomyślałem.
To trochę zmienia. Bibliotekę
memory należy włączyć w pliku nagłówkowym jeżeli funkcja
DoTest ma być częścią klasy formularza. Do pobrania zwróconej przez funkcję zawartości, trzeba posłużyć się funkcją
get.
Czyli sama konstrukcja funkcji:
std::auto_ptr<TStringList> __fastcall TForm1::DoTest(void)
{
std::auto_ptr<TStringList> myMap(new TStringList);
myMap->Add("klucz=costam");
myMap->Add("ble=costam2");
myMap->Add("ble=costam2");
myMap->Add("ble=costam2");
myMap->Add("aassble=costam2");
myMap->Add("jakaś kategoria testowa=costam2");
return myMap;
}
Tam gdzie jest pobierany cały obiekt trzeba użyć
get:
Memo1->Lines->AddStrings( DoTest().get() ); /* zwracam uwagę na get */
Memo1->Text = StringReplace(Memo1->Text, "=", ":", TReplaceFlags() << rfReplaceAll);
A tutaj już nie:
int y = DoTest()->Count;
for( int x = 0; x < y; x++ )
{
String key = DoTest()->Names[x];
String value = DoTest()->Values[key];
Memo1->Lines->Add( key + " : " + value );
}