Jag hittade ett underbart script, som hjälper mig att kopiera en hel mapp-struktur. du får nog ge lite mer info, speciellt vad Form1.info är och det är väl på rad 397 som det blir fel. Vad händer på den raden och vad har hänt innan och efter... förmodligen har du gjort nåt syntax fel... Oj, jag trodde att jag gav det mesta. Du har satt en path for dir förmodar jag ;) : Det ser alltså ut så här: Jag har hittat felet. Denna biten fungerar helt ok, men nu skulle jag vilja ha med en progressbar, då uppstår frågan, hur kan jag enkelt räkna hur många filer jag har i den mappen (med undermappar) för att kunna köra en progressbar?Att kopiera en mappstruktur.
http://www.aspemporium.com/aspEmporium/cshrp/howtos/howto.asp?hid=20
Nu ville jag göra lite mera, via en label tala om vilka filer som kopieras.
Detta går inte, jag får ett error när jag försöker.
Jag ropar på classen så här:
<code>
FileCopy(srcdir, destdir, recursive);
//classen börjar så här:
private static void FileCopy(string srcdir, string destdir, bool recursive)
{
DirectoryInfo dir;
FileInfo[] files;
DirectoryInfo[] dirs;
string tmppath;
</code>
I vanliga fall så brukar man ju kunna skriva label1.text osv
Nu får jag felet:
<code>
E:\MultLanguage\MultLanguage\MultLanguage.cs(397): ''MultLanguage.Form1.info'' denotes a ''field'' where a ''class'' was expected
</code>
Går det att komma runt detta?Sv: Att kopiera en mappstruktur.
Sv: Att kopiera en mappstruktur.
info är en label.
När jag försöker att få se vilka filer som kopieras:
<code>
files = dir.GetFiles();
//loop through each file
foreach(FileInfo file in files)
{//
info.text = file;//<--------det är här han klagar
//create the path to where this file should be in destdir
tmppath=Path.Combine(destdir, file.Name);
//copy file to dest dir
file.CopyTo(tmppath, false);
}//cleanup
</code>
Så här ser det ut.
När jag gör så här säger han:
<code>
E:\MultLanguage\MultLanguage\MultLanguage.cs(405): ''MultLanguage.Form1.info'' denotes a ''field'' where a ''class'' was expected
</code>
Hjälpte det?Sv: Att kopiera en mappstruktur.
DirectoryInfo dir = new DirectoryInfo(@"c:\aktiefiler\");
Annars kan du testa:
info.text = file.ToString();//
Det skall fungera, jag har själv gjort motsvarande senast idag.
Sv: Att kopiera en mappstruktur.
<code>
DirectoryInfo dir;
FileInfo[] files;
DirectoryInfo[] dirs;
string tmppath;
if (! Directory.Exists(destdir))
{
Directory.CreateDirectory(destdir);
}
dir = new DirectoryInfo(srcdir);
//if the source dir doesn''''t exist, throw
if (! dir.Exists)
{
throw new ArgumentException("source dir doesn''''t exist -> " + srcdir);
}
//get all files in the current dir
files = dir.GetFiles();
//loop through each file
foreach(FileInfo file in files)
{//
info.text = file.ToString();//
</code>
Jag får samma fel.Sv: Att kopiera en mappstruktur.
Så här var ju orginalet:
<code>
private static void FileCopy(string srcdir, string destdir, bool recursive)
</code>
...men när jag ändrade till:
<code>
private void FileCopy(string srcdir, string destdir, bool recursive)
</code>
...så fungerade det.
Nu uppkommer ju frågan automatiskt, jag får ju inga fel, men är det någonting som "kan hända"?Sv: Att kopiera en mappstruktur.
Jag försöker så här;
<code>
private long countFil;
DirectoryInfo nyInf = new DirectoryInfo(folderName);
CountFiles(nyInf);
private void CountFiles(DirectoryInfo dir)
{
countFil++;
foreach(DirectoryInfo subdir in dir.GetDirectories())
{
countFil++;
CountFiles(subdir);
}
}
</code>
...naturligtvis så blir detta fel, Hur bör jag göra?
[REDIGERAT]
Jag lyckades;
<code>
private void countMappar(DirectoryInfo dir)
{
string mapp = dir.ToString();
string[] dirs = Directory.GetDirectories(mapp);
int count = dirs.Length;
for (int i=0; i<count; i++)
{
DirectoryInfo nyMapp = new DirectoryInfo(dirs[i]);
countfiler(nyMapp);
}
}
private void countfiler(DirectoryInfo dir)
{
string[] files = Directory.GetFiles(dir.ToString());
int count = files.Length;
for (int f=0; f<count; f++)
{
totaltAntal = f;
return;
}
smoothProgressBar1.Maximum = totaltAntal;
this.Text = totaltAntal.ToString();
}
//sen var det ju bara att i classen för kopiering...
this.smoothProgressBar1.Value++;
smoothProgressBar1.Refresh();
</code>