// this works for any strings, not only addresses: the variable names are just // left overs wxArrayString strutil_uniq_array(const wxSortedArrayString& addrSorted) { wxArrayString addresses; wxString addr; size_t count = addrSorted.GetCount(); for ( size_t n = 0; n < count; n++ ) { if ( addrSorted[n] != addr ) { // add the address we had before (if we did) to the list if ( !addr.empty() ) { addresses.Add(addr); } // and remeber it to avoid adding it more than once addr = addrSorted[n]; } //else: another copy, just skip } if ( !addr.empty() ) { // don't forget to add the last one which we don't have yet addresses.Add(addr); } return addresses; }
void CDVRPTRClientApp::setRpt2Calls(const wxString& call, const wxSortedArrayString& list) const { wxConfigBase* profile = new wxConfig(APPLICATION_NAME); wxASSERT(profile != NULL); // Convert the array into a comma delimited list wxString temp; size_t count = list.GetCount(); for (unsigned int i = 0U; i < count; i++) { temp += list.Item(i); temp += wxT(','); } profile->Write(KEY_RPT2_CALL, call); profile->Write(KEY_RPT2_LIST, temp); profile->Flush(); wxLogInfo(wxT("RPT2 call set to %s"), call.c_str()); wxLogInfo(wxT("RPT2 list set to %s"), temp.c_str()); delete profile; }