Пример #1
0
// удаляет ненужные файлы из текущего каталога и его подкаталогов
void __fastcall Clear(void)
{

   TSearchRec SearchRec; // информация о файле или каталоге

   cDir = GetCurrentDir()+"\\";

   if ( FindFirst("*.*", faArchive,SearchRec) == 0)
       do {
            // проверим расширение файла
            int p = SearchRec.Name.Pos(".");
            FileExt = SearchRec.Name.SubString(p+1,MAX_PATH);
            if ( ( FileExt[1] == '~') || ( FileExt == "obj" ) ||
                 ( FileExt == "tds" ) )
            {
                  Form1->Memo1->Lines->Add(cDir+SearchRec.Name);
                  DeleteFile(SearchRec.Name);
                  n++;
            }
        }
        while ( FindNext(SearchRec) == 0);

       // обработка подкаталогов текущего каталога
       if ( FindFirst("*", faDirectory, SearchRec) == 0)
          do
              if ((SearchRec.Attr & faDirectory) == SearchRec.Attr )
              {
                    // каталоги ".." и "." тоже каталоги,
                    // но в них входить не надо !!!
                    if (( SearchRec.Name != "." ) && (SearchRec.Name != ".."))
                    {
                         ChDir(SearchRec.Name); // войти в подкаталог
                         Clear();               // очистить каталог
                         ChDir("..");           // выйти из каталога

                    };
               }
          while ( FindNext(SearchRec) == 0 );
}
Пример #2
0
void ApiChDir(DWORD *argv)
{
	const char *path;

	if ((argv[MSG_ATTR_ID] & MSG_MAP_MASK) != MSG_ATTR_ROMAP)
		return;
	path = (const char*)argv[MSG_ADDR_ID];
	if (CheckPathSize(path, argv[MSG_SIZE_ID]) == NULL)
		argv[MSG_RES_ID] = FS_ERR_ARGS_TOOLONG;
	else
		argv[MSG_RES_ID] = ChDir(pret[((THREAD_ID*)&argv[PTID_ID])->ProcID], path);
	KUnmapProcAddr((void*)path, argv);
}
Пример #3
0
// щелчок на кнопке Выполнить
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Memo1->Clear();          // очистить поле Memo1
    Directory = Edit1->Text; // каталог, в котором находятся проекты C++Builder
    ChDir(Directory);        // войти в каталог проектов C++Builder

    Clear();                 // очистить текущий каталог и его подкаталоги

    Memo1->Lines->Add("");
    if (n)
        Memo1->Lines->Add("Удалено файлов: " + IntToStr(n));
     else
        Memo1->Lines->Add("В указанном каталоге нет файлов, которые надо удалить.");
}
Пример #4
0
char *FileReq(char *dir, const char *ext, char *result)
{
	static char *cwd = NULL;
	static s32 cursor_pos = 1;
	static s32 first_visible;
	static s32 num_items = 0;
	DIR *dirstream;
	struct dirent *direntry;
	static s32 row;
	char tmp_string[41];
	u32 keys;

	if (dir)
		ChDir(dir);

	cwd = GetCwd();

	for (;;) {
		keys = key_read();

		video_clear();

		if (keys & KEY_SELECT) {
			FREE_LIST();
			key_reset();
			return NULL;
		}

		if (num_items == 0) {
			dirstream = opendir(cwd);
			if (dirstream == NULL) {
				port_printf(0, 20, "error opening directory");
				return NULL;
			}
			// read directory entries
			while ((direntry = readdir(dirstream))) {
				s32 type = get_entry_type(cwd, direntry->d_name);

				// this is a very ugly way of only accepting a certain extension
				if ((type == 0 && strcmp(direntry->d_name, ".")) ||
				     check_ext(direntry->d_name) ||
				    (ext && (strlen(direntry->d_name) > 4 &&0 == strncasecmp(direntry->d_name + (strlen(direntry->d_name) - strlen(ext)), ext, strlen(ext))))) {
					// Hide ".." if at Unix root dir. Don't display Unix hidden files (.file).
					if ((!strcmp(direntry->d_name, "..") && strcmp(cwd, "/")) || direntry->d_name[0] != '.')
					{
						filereq_dir_items[num_items].name = (char *)malloc(strlen(direntry->d_name) + 1);
						strcpy(filereq_dir_items[num_items].name, direntry->d_name);
						filereq_dir_items[num_items].type = type;
						num_items++;
						if (num_items > 1024) break;
					}
				}
			}
			closedir(dirstream);

			sort_dir(filereq_dir_items, num_items);
			cursor_pos = 0;
			first_visible = 0;
		}

		// display current directory
		int len = strlen(cwd);

		if (len > 40) {
			strcpy(tmp_string, "..");
			strcat(tmp_string, cwd + len - 38);
			port_printf(0, MENU_Y, tmp_string);
		} else
			port_printf(0, MENU_Y, cwd);

		if (keys & KEY_DOWN) { //down
			if (++cursor_pos >= num_items) {
				cursor_pos = 0;
				first_visible = 0;
			}
			if ((cursor_pos - first_visible) >= MENU_HEIGHT) first_visible++;
		} else if (keys & KEY_UP) { // up
			if (--cursor_pos < 0) {
				cursor_pos = num_items - 1;
				first_visible = cursor_pos - MENU_HEIGHT + 1;
				if (first_visible < 0) first_visible = 0;
			}
			if (cursor_pos < first_visible) first_visible--;
		} else if (keys & KEY_LEFT) { //left
			if (cursor_pos >= 10) cursor_pos -= 10;
			else cursor_pos = 0;
			if (cursor_pos < first_visible) first_visible = cursor_pos;
		} else if (keys & KEY_RIGHT) { //right
			if (cursor_pos < (num_items - 11)) cursor_pos += 10;
			else cursor_pos = num_items - 1;
			if ((cursor_pos - first_visible) >= MENU_HEIGHT)
				first_visible = cursor_pos - (MENU_HEIGHT - 1);
		} else if (keys & KEY_A) { // button 1
			// directory selected
			if (filereq_dir_items[cursor_pos].type == 0) {
				strcat(cwd, "/");
				strcat(cwd, filereq_dir_items[cursor_pos].name);

				ChDir(cwd);
				cwd = GetCwd();

				FREE_LIST();
				key_reset();
			} else {
				sprintf(result, "%s/%s", cwd, filereq_dir_items[cursor_pos].name);
				if (dir)
					strcpy(dir, cwd);

				video_clear();
				port_printf(16 * 8, 120, "LOADING");
				video_flip();

				FREE_LIST();
				key_reset();
				return result;
			}
		} else if (keys & KEY_B) {
			cursor_pos = 0;
			first_visible = 0;
			key_reset();
		}

		// display directory contents
		row = 0;
		while (row < num_items && row < MENU_HEIGHT) {
			if (row == (cursor_pos - first_visible)) {
				// draw cursor
				port_printf(MENU_X + 16, MENU_LS + (10 * row), "-->");
			}

			if (filereq_dir_items[row + first_visible].type == 0)
				port_printf(MENU_X, MENU_LS + (10 * row), "DIR");
			int len = strlen(filereq_dir_items[row + first_visible].name);
			if (len > 32) {
				snprintf(tmp_string, 16, "%s", filereq_dir_items[row + first_visible].name);
				strcat(tmp_string, "..");
				strcat(tmp_string, &filereq_dir_items[row + first_visible].name[len - 15]);
			} else
			snprintf(tmp_string, 33, "%s", filereq_dir_items[row + first_visible].name);
			port_printf(MENU_X + (8 * 5), MENU_LS + (10 * row), tmp_string);
			row++;
		}
		while (row < MENU_HEIGHT)
			row++;

		video_flip();
		timer_delay(75);

		if (keys & (KEY_A | KEY_B | KEY_X | KEY_Y | KEY_L | KEY_R |
			    KEY_LEFT | KEY_RIGHT | KEY_UP | KEY_DOWN))
			timer_delay(50);
	}

	return NULL;
}
Пример #5
0
void init_args(int argc, char **argv) {
	/* =================================================== */
	/* to add an option:
	 *  - include it in opts[]
	 *  - set a flag in valopts indicating no value (0),
	 *    value required (1), or value optional (-1),
	 *  - then tell us what to do in the switch statement
	 *
	 * 3/1/03 - cwb - Current options are
	 *                -d=chg to work dir <opt=dir_name>
	 *                -f=chg deflt first file <opt=file.in>
	 *                -q=quiet, don't print "Check logfile"
	 *                   at end of program.
	 */
	char str[1024];
	char const *opts[] = { "-d", "-f", "-e", "-q" }; /* valid options */
	int valopts[] = { 1, 1, 0, 0 }; /* indicates options with values */
	/* 0=none, 1=required, -1=optional */
	int i, /* looper through all cmdline arguments */
	a, /* current valid argument-value position */
	op, /* position number of found option */
	nopts = sizeof(opts) / sizeof(char *);

	/* Defaults */
	strcpy(_firstfile, DFLT_FIRSTFILE);
	QuietMode = EchoInits = swFALSE;

	a = 1;
	for (i = 1; i <= nopts; i++) {
		if (a >= argc)
			break;

		/* figure out which option by its position 0-(nopts-1) */
		for (op = 0; op < nopts; op++) {
			if (strncmp(opts[op], argv[a], 2) == 0)
				break; /* found it, move on */
		}
		if (op == nopts) {
      usage();
      sw_error(-1, "Invalid option %s\n", argv[a]);
		}

		*str = '\0';
		/* extract value part of option-value pair */
		if (valopts[op]) {
			if ('\0' != argv[a][2]) { /* no space betw opt-value */
				strcpy(str, (argv[a] + 2));

			} else if ('-' != *argv[a + 1]) { /* space betw opt-value */
				strcpy(str, argv[++a]);

			} else if (0 < valopts[op]) { /* required opt-val not found */
        usage();
        sw_error(-1, "Incomplete option %s\n", opts[op]);
			} /* opt-val not required */
		}

		/* tell us what to do here                   */
		/* set indicators/variables based on results */
		switch (op) {
		case 0: /* -d */
			if (!ChDir(str)) {
				LogError(logfp, LOGFATAL, "Invalid project directory (%s)", str);
			}
			break;
		case 1:
			strcpy(_firstfile, str);
			break; /* -f */
		case 2:
			EchoInits = swTRUE;
			break; /* -e */
		case 3:
			QuietMode = swTRUE;
			break; /* -q */
		default:
			LogError(logfp, LOGFATAL, "Programmer: bad option in main:init_args:switch");
		}

		a++; /* move to next valid arg-value position */

	} /* end for(i) */

}
Пример #6
0
//---------------------------------------------------------------------------
void __fastcall TfrmSignsReports::btnMakeClick(TObject *Sender)
{
    __int32 MinL = txtStartPosition->Text.ToInt();
    __int32 MaxL = txtEndPosition->Text.ToInt();

//*** создадм объекты и подключимся к DBF-ным файлкам
    TADOConnection *DbfConnection;
    TADOCommand *DbfCommand;
    AnsiString DBFFolderPath = ExtractFilePath(Application->ExeName) + "DBFFiles";
    ChDir(DBFFolderPath);

    try
    {
        DbfConnection = new TADOConnection(NULL);
        DbfCommand = new TADOCommand(NULL);
        DbfConnection->ConnectionString = "Driver={Microsoft Visual FoxPro Driver};UID=;SourceDB=" + DBFFolderPath + ";SourceType=DBF;Exclusive=No;Collate=MACHINE;OLE DB Services = 0";
        DbfConnection->LoginPrompt = false;
        DbfConnection->Connected = true;
        DbfCommand->Connection = DbfConnection;
    }
    catch(EOleException &OleError)
    {
        ShowMessage("Возникла ошибка при открытии DBF файлов. Код ошибки: " + AnsiString(OleError.ErrorCode) + ". Сообщение: " + OleError.Message + ".");
        return;
    }

    DeleteTempDBFFiles(DbfCommand, DBFFolderPath);

    String TemplateFile;
    String ReportFile;
    String OutFile;
    FDesignSource=NULL;
    if (DesignSourceList->ItemIndex>=0)
        FDesignSource=dynamic_cast<TDtaSource*>(DesignSourceList->Items->Objects[DesignSourceList->ItemIndex]);
    FExistSource=NULL;
    if (ExistSourceList->ItemIndex>=0)
        FExistSource=dynamic_cast<TDtaSource*>(ExistSourceList->Items->Objects[ExistSourceList->ItemIndex]);
    MakeHeaderFile(DbfCommand,MinL*100,MaxL*100);
    try
        {
        String DllName;
        String RepExt;
        if (groupFormat->ItemIndex==0)
            {
            DllName="GenRep.dll";
            RepExt=".rtf";
            }
        else
            {
            DllName="HTMLGenRep.dll";
            RepExt=".htm";
            }

        AnsiString DllPath = ExtractFilePath(Application->ExeName) + DllName;
        HINSTANCE RepDll=LoadLibrary(DllPath.c_str());
        if (RepDll)
            {
            ReportFunction GenRep=(ReportFunction)GetProcAddress(RepDll,"GenRep");
            for (int i=0;i<ReportsList->Items->Count;i++)
                if (ReportsList->Checked[i])
                    {
                    switch (i)
                        {
                        case 0: MakeRoadSignRegister(DbfCommand,MinL,MaxL);break;
                        case 1: MakeNewRoadSignRegister(DbfCommand, MinL, MaxL);break;
                        case 2: MakeRoadSignSpecification(DbfCommand, MinL, MaxL);break;
                        case 3: MakeRoadSignPlacement(DbfCommand, MinL, MaxL);break;
                        case 4: MakeRoadMarkRegister(DbfCommand,MinL,MaxL);break;
                        }
                    TemplateFile="\\ReportTemplate"+String(i+1)+RepExt;
                    ReportFile="\\Report"+String(i+1)+".dbf";
                    OutFile=txtFileName->Text;
                    int pos=OutFile.Pos(".");
                    if (pos)
                        OutFile.Delete(pos,1000);
                    OutFile+=String(i+1)+RepExt;
                    if (DeleteFileDialog(txtFilePath->Text,OutFile))
                        {
                        try
                            {
                            String WorkPath=ExtractFilePath(Application->ExeName) + "DBFFiles";
                            DbfConnection->Connected = false;
                            GenRep(String(WorkPath+TemplateFile).c_str(), WorkPath.c_str(), String(txtFilePath->Text+OutFile).c_str(), true , 1);
                            DbfConnection->Connected = true;
                            }
                        catch (...)
                            {
                            ShowMessage("Во время формирования произошла ошибка. Обратитесь к разработчикам.");
                            }
                        }
                    DeleteFile(DBFFolderPath + ReportFile);
                    }
            for (int i=0;i<TitulList->Items->Count;i++)
                {
                if (TitulList->Checked[i])
                    {
                    TemplateFile="\\TitulTemplate"+String(i+1)+RepExt;
                    OutFile=txtFileName->Text;
                    int pos=OutFile.Pos(".");
                    if (pos)
                        OutFile.Delete(pos,1000);
                    OutFile+=String(i+1)+"_t"+RepExt;
                    try
                        {
                        String WorkPath=ExtractFilePath(Application->ExeName) + "DBFFiles";
                        DbfConnection->Connected = false;
                        GenRep(String(WorkPath+TemplateFile).c_str(), WorkPath.c_str(), String(txtFilePath->Text+OutFile).c_str(), true , 1);
                        DbfConnection->Connected = true;
                        }
                    catch (...)
                        {
                        ShowMessage("Во время формирования произошла ошибка. Обратитесь к разработчикам.");
                        }
                    }
                }
            FreeLibrary(RepDll);
            }
        else
            ShowMessage("Не найдена библиотека"+DllName);
        }
    catch(...)
        {
        ShowMessage("Ошибка при формировании отчета");
        }
    DbfConnection->Connected = false;
    delete DbfCommand;
    delete DbfConnection;
}