Help!!! Kak programmno sozdat katalog i perekopirovat tuda dannyje
ShellExecute(NULL, "mkdir", NULL, "c:\\backup\\nc", NULL , SW_HIDE);
Tut delo takoje:
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
lpOperation eto nazvanije komady kotoruju xociu vyzvat'. Tak, ja ponimaju.
lpParameters eto parametry toj komady, v etom slucaje, po mojemu dolzen byt put'.
Mozet ja cevoto ne ponial. Pomogite pozaluista.
Nikak nepolucajetsia mne vyzvat ShellExecute ().
ShellExecute(NULL, "mkdir", NULL, "c:\\backup\\nc", NULL , SW_HIDE);
Tut delo takoje:
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
lpOperation eto nazvanije komady kotoruju xociu vyzvat'. Tak, ja ponimaju.
lpParameters eto parametry toj komady, v etom slucaje, po mojemu dolzen byt put'.
Mozet ja cevoto ne ponial. Pomogite pozaluista.
The following example creates a directory ‘C:\temp’ if it does not already exist.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!DirectoryExists("c:\\temp"))
{
if (!CreateDir("C:\\temp"))
throw Exception("Cannot create c:\\temp directory.");
}
}
Читайте Help пожалуйста!!!!!!
Copies the source file to the destination file.
function CopyFileTo(const Source: string; const Destination: string): Boolean;
Parameters
const Source: string
Source file name.
const Destination: string
Destination file name.
Returns
Boolean - True if the file is copied, False on error.
Description
CopyFileTo is a function used to copy the file specified in Source to the file specified in Destination.
CopyFileTo will return False if the file in Destination already exists.
CopyFileTo encapsulates the platform-specific calls needed to perform the file copy operation. On the Windows platform, this is the Win32 API function CopyFile. On the Linux platform, CopyFileTo uses a TFileStream instance to create the destination file.
TSearchRec sr;
if(FindFirst([COLOR=purple]"c:\\xiaoxiao\\[/COLOR]*.*",faAnyFile,sr)==0)
{
do
{
if(sr.Name[1]=='.')continue;
CopyFile(AnsiString([COLOR=purple]"c:\\xiaoxiao\\"[/COLOR]+sr.Name).c_str(),AnsiString([COLOR=red]"c:\\tempo\\"[/COLOR]+ExtractFileName(sr.Name)).c_str(),false);
}while (FindNext(sr) == 0);
FindClose(sr);
}
Создаем на диске C: папку [COLOR=red]tempo[/COLOR] и копируем туда содержимое папки [COLOR=purple]xiaoxiao[/COLOR]
The following example creates a directory ‘C:\temp’ if it does not already exist.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!DirectoryExists("c:\\temp"))
{
if (!CreateDir("C:\\temp"))
throw Exception("Cannot create c:\\temp directory.");
}
}
A poprobuj za odin raz sozdat katalog po puti
c:\temp\a\b\c\d
i iz funkcyji CreateDir polucis exception.
a vot mkdir mozet takoj fint.
Escio raz povtoriaju: Mne nuzno vyzvat ShellExecute s komandoj mkdir i podat' emu ves ukazannyj put'. Kak eto sdelat?
P.S. ne nado mne borlandskije funkcyji predlogat, oni ne rabotajut tak kak mne nado.
Nikak nepolucajetsia mne vyzvat ShellExecute ().
ShellExecute(NULL, "mkdir", NULL, "c:\\backup\\nc", NULL , SW_HIDE);
Tut delo takoje:
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
lpOperation eto nazvanije komady kotoruju xociu vyzvat'. Tak, ja ponimaju.
lpParameters eto parametry toj komady, v etom slucaje, po mojemu dolzen byt put'.
Mozet ja cevoto ne ponial. Pomogite pozaluista.
Тогда давай подробнее:
1 Что значит не получается?
2 Если выдает ошибки, то какие?
3 Почему не подходят стандартные функции борланд. Написать создание двух подряд поддиректорий не так уж и сложно.
SetCurrentDir("C:\\backup");
CreateDir("nc");
PS: Есть еще ForceDirectories(...) см. выше.
Тогда давай подробнее:
1 Что значит не получается?
2 Если выдает ошибки, то какие?
3 Почему не подходят стандартные функции борланд. Написать создание двух подряд поддиректорий не так уж и сложно.
SetCurrentDir("C:\\backup");
CreateDir("nc");
PS: Есть еще ForceDirectories(...) см. выше.
ne v osibkax sut'. Delo v tom cto mne nuzno perekopirovat dannyje s odnovo kompa na drugoj.
Dopustim:
est' server. V niom est' katalog backup.
est' moj komp. u mneia xraniatsia dannyje. ja zapuskaju svojo prilozenije. ukazyvaju cto sochraniat'. t.e. put do kataloga kotoryj nuzno perenesti v \\server\backup.
dalse, pered kopirovanijem dannyx, ja na servere sozdaju katalog so svoim kompovskim nazvanijem->
polucajetsia: \\server\backup\underworld\
potom v mojej programke est' puti:
c:\nc
c:\mail\underworld\inbox
i t.d.
ja otkidyvaju tolko disk (c:\), polucaju ostavsyjsia put' (mail\underworld\inbox)
Tak vot etot katalog mne i nuzna perekinut v server, tak ctoby put' polucilsia:
\\server\backup\underworld\nc
\\server\backup\underworld\mail\underworld\inbox
xoroso esli tolko stolko budet katalogov, a esli ix budet kucha?
to takoj fint create->change->create, ne ocen xorosaja ideja.
Tak vot skazy mne pozaluista, mogu li ja zapustit standartnuju OS komandu mkdir, cerez shell execute i kak eto sdelat? ctoby mne ne nuznobyloby 10 raz prokrucivat cykly, i 10 raz sozdavat katalogi.
нет я лучше уж процитирую сразу
угу?
нет, ну вот все-таки почитайте HELP по уже показанным вам функциям в частности ForceDirectories
нет я лучше уж процитирую сразу
гу?
ForceDirectories podxodit. ja uze poproboval. no mne interesno kak eto sdelat' s ShellExecute!!!!!!!!!!!!!
ne v osibkax sut'. Delo v tom cto mne nuzno perekopirovat dannyje s odnovo kompa na drugoj.
Dopustim:
est' server. V niom est' katalog backup.
est' moj komp. u mneia xraniatsia dannyje. ja zapuskaju svojo prilozenije. ukazyvaju cto sochraniat'. t.e. put do kataloga kotoryj nuzno perenesti v \\server\backup.
dalse, pered kopirovanijem dannyx, ja na servere sozdaju katalog so svoim kompovskim nazvanijem->
polucajetsia: \\server\backup\underworld\
potom v mojej programke est' puti:
c:\nc
c:\mail\underworld\inbox
i t.d.
ja otkidyvaju tolko disk (c:\), polucaju ostavsyjsia put' (mail\underworld\inbox)
Tak vot etot katalog mne i nuzna perekinut v server, tak ctoby put' polucilsia:
\\server\backup\underworld\nc
\\server\backup\underworld\mail\underworld\inbox
xoroso esli tolko stolko budet katalogov, a esli ix budet kucha?
to takoj fint create->change->create, ne ocen xorosaja ideja.
Tak vot skazy mne pozaluista, mogu li ja zapustit standartnuju OS komandu mkdir, cerez shell execute i kak eto sdelat? ctoby mne ne nuznobyloby 10 raz prokrucivat cykly, i 10 raz sozdavat katalogi.
Ну если уж так хочется попробуй через функции низкого уровня:
int execl(char *path, char *arg0 *arg1, ..., *argn, NULL); int _wexecl(wchar_t *path, wchar_t *arg0 *arg1, ..., *argn, NULL); int execle(char *path, char *arg0, *arg1, ..., *argn, NULL, char **env); int _wexecle(wchar_t *path, wchar_t *arg0, *arg1, ..., *argn, NULL, wchar_t **env); int execlp(char *path, char *arg0,*arg1, ..., *argn, NULL); int _wexeclp(wchar_t *path, wchar_t *arg0,*arg1, ..., *argn, NULL); int execlpe(char *path, char *arg0, *arg1, ..., *argn, NULL, char **env); int _wexeclpe(wchar_t *path, wchar_t *arg0, *arg1, ..., *argn, NULL, wchar_t **env); int execv(char *path, char *argv[]); int _wexecv(wchar_t *path, wchar_t *argv[]); int execve(char *path, char *argv[], char **env); int _wexecve(wchar_t *path, wchar_t *argv[], wchar_t **env); int execvp(char *path, char *argv[]); int _wexecvp(wchar_t *path, wchar_t *argv[]); int execvpe(char *path, char *argv[], char **env); int _wexecvpe(wchar_t *path, wchar_t *argv[], wchar_t **env);
Est' escio odin vopros.
Kak uznat skolko vsevo failov v kataloge? est kakaja nibud funkcyja ili nuzno prokrucivat cykl i scitat?
NU vsio vrode polucilos. Spasibo vsem za pomosch.
Est' escio odin vopros.
Kak uznat skolko vsevo failov v kataloge? est kakaja nibud funkcyja ili nuzno prokrucivat cykl i scitat?
На сколько я знаю, в силу особенностей файловой системы, которая на самом деле представляет из себя связанный список, сразу посчитать количество файлов в директории не возможно. Следовательно даже если и есть такая функция в библиотеке (в чем я лично сомневаюсь), она все равно будет крутить цикл. Так что разницы ни какой нет. Крути сам. Это не сложно. Тем более, что в цикле ты можешь сразу еще и копировать.
На сколько я знаю, в силу особенностей файловой системы, которая на самом деле представляет из себя связанный список, сразу посчитать количество файлов в директории не возможно. Следовательно даже если и есть такая функция в библиотеке (в чем я лично сомневаюсь), она все равно будет крутить цикл. Так что разницы ни какой нет. Крути сам. Это не сложно. Тем более, что в цикле ты можешь сразу еще и копировать.
Srazu koppirovat ja ne mogu, potomucto uznat kolicestvo failov mne nuzno dlia Progressbara. Ctoto tipa Standartnovo windows copy dialoga.
No eto vsio xernia. dalse uze razbirus. :)
Priveliko blagodaren AlexandrVSmirno ;)