> -- Пётр Кушнир писал(а):
> уважаемый, тут речь немного не о том. почитайте про серверный режим работы среды и использование ключа коммандной строки /use
Мне кажется, что для задач указанных в параграфе 4 Серверная установка «Руководство пользователя», в рабочей директории удобно создавать файлы с временными именами, используя WinApi-функцию GetTempFileName.  Она позволяет добавлять к префиксу имени файла, например, текущее системное время.

Попытался перевести такую программку с С++ при помощи утилиты с2ср из коллекции Helmut’а Zinn’а. Удивительно, что листинг перевода содержит GOTO и метки переходов. Указать правильные типы большого труда не составляет, но может быть есть более грубые нестыковки. Поэтому приведу оба листинга.## Код:
```
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
static HANDLE hFile;
static char   szTmpFile[MAX_PATH+1];
   switch( uMsg )
   {
      case WM_CREATE  :
              {
                 char szTmpPath[MAX_PATH+1];
                 GetTempPath( MAX_PATH, szTmpPath );
                 GetTempFileName( szTmpPath, "GEN", 0, szTmpFile );
                 hFile = CreateFile( szTmpFile, GENERIC_READ | GENERIC_WRITE,
                                     0, NULL, OPEN_ALWAYS,
                                     FILE_ATTRIBUTE_TEMPORARY, NULL );
              }
              break;

   ………………………………………………….

     case WM_DESTROY :
             if ( hFile )
              {
                 CloseHandle( hFile );
                 DeleteFile( szTmpFile );
              }
              PostQuitMessage(0);
              break;
      default :
            return( DefWindowProc( hWnd, uMsg, wParam, lParam ) );
   }
   return( 0L );
}
```

## Код:
```
(*-----------------------------------------------------------------------------
--   Von C nach Pascal ьbersetzt mit dem Program CTOPAS
--   (C) Helmut Zinn   V95/12/12
-----------------------------------------------------------------------------*)

MODULE TmpFile;

   IMPORT StdLog;

   PROCEDURE ^ WndProc (hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM) : LRESULT;
   
   VAR CALLBACKPROCEDURE WndProc (hWnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM) : LRESULT;
   LABEL L1;
         (*static*)VAR hFile : HANDLE;
   (*static*)VAR szTmpFile : ARRAY MAX_PATH+1 OF CHAR;
   BEGIN
       CASE uMsg OF 
         | WM_CREATE  : 
            CHAR szTmpPath[MAX_PATH+1];
            GetTempPath(MAX_PATH, szTmpPath);
            GetTempFileName(szTmpPath, 'GEN', 0, szTmpFile);
            hFile := CreateFile(szTmpFile, GENERIC_READ OR GENERIC_WRITE, 0, NIL, OPEN_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NIL);
            GOTO L1; (* Warning: no break statement *)
         END;
         break;

         …………………………….

         | WM_DESTROY :
            L1: 
            IF hFile # 0 THEN 
               CloseHandle(hFile);
               DeleteFile(szTmpFile);
            END;
            PostQuitMessage(0);
            (* BREAK *)
         ELSE 
            WndProc := DefWindowProc(hWnd, uMsg, wParam, lParam);
            RETURN;
         END;
      END;
      WndProc := 0(*L*);
      RETURN;
   END WndProc;
   
END TmpFile.
```
Такую вставку можно сделать в модуль CommObxStreamsServer вместо создания окна сообщения. Программка должна создать новый временный файл и открыть его. Если файл был создан, тогда его удалить. Не суть, что в модуле используется функция(GetTempPath) поиска из системных переменных временных папок. Каталог можно указать в зависимости от задачи.