Uwaga 1. To jest przejrzenie całej listy kontaktów
blokujące na czas odczytu listę. Jest to konieczne dla synchronizacji, ale oznacza, że w tym czasie inne wtyczki będą zablokowane przy próbie odczytu listy dopóki jej nie odblokujesz.
Uwaga 2. Funkcja służy w imp-gg do znalezienie kontaktu o znanym DISPLAY albo CELLPHONE. W nowym SDK ma być zbędna ze względu na możliwość przeszukiwania listy po dowolnym parametrze, nie wiem, czy to jest już dostępne.
Uwaga 3. Użycie w ten sposób std::string nie jest optymalne wydajnościowo, ale zabezpiecza przed wyciekiem przypadkowym pamięci. Aktualnie dostępny jest już chyba string ze stamina.li, powinno byc prościej?
CODE
int getCntByDisplayOrPhone(const char* string)
{
//blokujemy liste kontaktów
Ctrl->DTlock(DTCNT,-1);
//przeglądamy całą listę
for (int i = 1; i < ICMessage(IMC_CNT_COUNT); i++) {
//pobieramy DISPLAY aktualnego kontaktu
std::string display = GETCNTC(i, CNT_DISPLAY);
//jeśli się zgadza z szukanym
if(strcmp(string,display.c_str())==0)
{
//odblokowujemy listę kontaktów
Ctrl->DTunlock(DTCNT,-1);
return i;
}
//pobieramy CELLPHONE aktualnego kontaktu
std::string phone = GETCNTC(i, CNT_CELLPHONE);
//jeśli się zgadza z szukanym
if(strcmp(string,phone.c_str())==0)
{
//odblokowujemy listę kontaktów
Ctrl->DTunlock(DTCNT,-1);
return i;
}
}
//odblokowujemy listę kontaktów
Ctrl->DTunlock(DTCNT,-1);
return 0;
}
Coś jest niezrozumiałe? Pisz na jabbera/gg.
EDIT:właśnie zauważyłem, że to wątek o delphi
. Mam nadzieję, że kod dasz radę przenieść?