home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / winsock / fingd100 / src / strlib.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-19  |  2.5 KB  |  143 lines

  1. #include <windows.h>
  2. #include <windowsx.h>
  3. #include "strlib.h"
  4.  
  5. HANDLE    hStrings[MAX_STRINGS];
  6. int    aTotal = 0;
  7.  
  8.  
  9. int    NumberOfStrings( void )
  10. {
  11.     return aTotal;
  12. }
  13.  
  14. BOOL    AppendFirstString(LPSTR lpStringIn)
  15. {
  16.     HANDLE hString, hStringNew;
  17.     LPSTR lpString, lpStringNew;
  18.     int    i, nLength;
  19.  
  20.     if ( aTotal== 0 )
  21.         return FALSE;
  22.  
  23.         hString = hStrings[0];
  24.     lpString = GlobalLock(hString);
  25.     nLength = lstrlen(lpStringIn);
  26.         nLength += lstrlen(lpString);
  27.  
  28.     if ( NULL == (hStringNew = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, (1 + nLength))))
  29.         return FALSE;
  30.     lpStringNew = GlobalLock(hStringNew);
  31.  
  32.         lstrcpy(lpStringNew, lpString);
  33.     lstrcat(lpStringNew, lpStringIn);
  34.     GlobalUnlock(hStringNew);
  35.  
  36.     hStrings[0] = hStringNew;
  37.  
  38.     GlobalUnlock(hString);
  39.     GlobalFree(hString);
  40.  
  41.     return TRUE;
  42. }
  43.  
  44.  
  45.  
  46. BOOL AddString(LPSTR lpStringIn)
  47. {
  48.     HANDLE hString;
  49.     LPSTR lpString;
  50.     int    i, nLength;
  51.  
  52.     if ( aTotal == (MAX_STRINGS - 1) )
  53.         return FALSE;
  54.  
  55.     if ( 0 == (nLength = lstrlen(lpStringIn)))
  56.         return FALSE;
  57.  
  58.     if ( NULL == (hString = GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, (1 + nLength))))
  59.         return FALSE;
  60.  
  61.     lpString = GlobalLock(hString);
  62.     lstrcpy(lpString, lpStringIn);
  63.     GlobalUnlock(hString);
  64.  
  65.     for( i = aTotal; i > 0; i-- )
  66.     {
  67.         hStrings[i] = hStrings[i - 1];
  68.     }
  69.         hStrings[0] = hString;
  70.     aTotal++;
  71.     return TRUE;
  72. }
  73.  
  74.  
  75. BOOL    DeleteString(LPSTR lpStringIn)
  76. {
  77.     LPSTR    lpString;
  78.     int    j, i, nCompare;
  79.  
  80.     if ( 0 == lstrlen(lpStringIn)) return FALSE;
  81.  
  82.     for ( i = 0; i < aTotal; i++ )
  83.     {
  84.         lpString = GlobalLock(hStrings[i]);
  85.         nCompare = lstrcmp(lpString, lpStringIn);
  86.         GlobalUnlock(hStrings[i]);
  87.         if ( nCompare == 0 ) break;
  88.     }
  89.     if ( i == aTotal ) return FALSE;
  90.  
  91.     for ( j = i; j < aTotal; j++ )
  92.         hStrings[j] = hStrings[j + 1];
  93.     aTotal--;
  94.     return TRUE;
  95. }
  96.  
  97.  
  98. BOOL    DeleteFirstString( void )
  99. {
  100.     int    i;
  101.  
  102.     if ( aTotal == 0 ) return FALSE;
  103.  
  104.     for ( i = aTotal; i > 0; i-- )
  105.         hStrings[i] = hStrings[i - 1];
  106.  
  107.     aTotal--;
  108.     return TRUE;
  109. }
  110.  
  111.  
  112. BOOL    DestroyStrings( void )
  113. {
  114.     int    i;
  115.  
  116.     if ( aTotal== 0 ) return TRUE;
  117.  
  118.     for ( i = 0; i < aTotal; i++ )
  119.         GlobalFree(hStrings[i]);
  120.  
  121.     aTotal = 0;
  122.     return TRUE;
  123. }
  124.  
  125.  
  126. int    GetStrings(GETSTR lpfnGetStrCallBack, LPARAM lParam)
  127. {
  128.     BOOL    bReturn;
  129.     LPSTR    lpString;
  130.     int    i;
  131.  
  132.     for( i = 0; i < aTotal; i++ )
  133.     {
  134.         lpString = GlobalLock(hStrings[i]);
  135.         bReturn = (*lpfnGetStrCallBack)((LPSTR) lpString, lParam);
  136.         GlobalUnlock(hStrings[i]);
  137.  
  138.         if ( bReturn == FALSE ) return (i+1);
  139.     }
  140.  
  141.     return aTotal;
  142. }
  143.