Diskuze: Přesouvání souborů
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 26 zpráv z 26.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
to nedělej přes try catch mg udělej to jednoduše takhle
using System.IO;
if(Directory.Exists(Path))
Directory.Copy nebo co si to chtěl
else
// tady si nic nechtěl tak tam prostě to else nebudeš dávat vůbec :)
no protože tam budeš mít catch, kterej vůbec nevyužiješ a vsadím se že ta moje verze se provede o malilinko rychleji x)
Takže i když jsem to udělal jak jsi řekl:
if (Directory.Exists(ahoj + "slozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku slozka do složky tajnaslozka!";
ProgressBar1.Value = 25;
Directory.Move(ahoj + "slozka", mejse + "tajnaslozka" + "\\tajnaslozka");
}
else
{
}
Tak to nefunguje
Na spojování částí cesty používej Path.Combine(), vyřeší to za tebe problémy s chybějícími/existujícími lomítky.
Prázdnou else větev nepoužívej, prostě ji úplně vynech.
Prázdnou else větev nepoužívej, prostě ji úplně vynech:
To jsem měl jako první ještě než jsem zkusil try a catch prostě ifka šly
za sebou a stejně se to pořád zaseklo u toho prvního.
Path.Combine() to je co? Omlouvám se ale nejsem v C# tak skvělý. Používám jen to co potřebuji. Zbytek je pro mě zatím neznámá.
http://msdn.microsoft.com/…combine.aspx
"Na spojování částí cesty používej Path.Combine()"
Spojuje to části cesty.
String cesta = Path.Combine("C:\Hry", "MojeSuperHra", "soubor.txt")
obsah cesta pak bude "C:\Hry\MojeSuperHra\soubor.txt"
Nevím jaký
Hoď si do té funkce na začátek breakpoint a krokuj (klávesa F9 defaultně)
a uvidíš, kudy program teče.
Mělo by to přece fungovat úplně jednoduše:
try {
Directory.Move(ahoj + "slozka", mejse + "tajnaslozka" + "\\tajnaslozka");
} catch {
// Chyba při přesunu
}
On prostě vykoná if zjistí pokud tam ta složka je a pokud není tak stojí a nepokračuje dále což je dost divné.
pošli jsem celou část tvého kódu ať i víme proč se zasekne přijde mi divný že to nefunguje
if (Directory.Exists(slozka + "nejakaslozka"))
{
toolStripStatusLabel1.Text = "";
const string message = "Byla nalezena složka do které se má něco ukládat. Mám ji odstranit?";
const string caption = "Upozornění";
var result = MessageBox.Show(message, caption,
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Error);
if (result == DialogResult.Yes)
{
Directory.Delete(slozka + "nejakaslozka");
toolStripStatusLabel1.Text = "Vytvářím složku nejakaslozka";
ProgressBar1.Value = 15;
Directory.CreateDirectory(slozka + "nejakaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka tajnaslozka...";
ProgressBar1.Value = 20;
if (Directory.Exists(slozka + "tajnaslozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku tajnaslozka do složky nejakaslozka!";
ProgressBar1.Value = 25;
Directory.Move(slozka + "tajnaslozka", slozka + nejakaslozka + "\\tajnaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka nejakajinaslozka...";
ProgressBar1.Value = 30;
}
else
{
}
if (Directory.Exists(slozka + "nejakajinaslozka"))
{
toolStripStatusLabel1.Text = "Přesouvám složku nejakajinaslozka do složky tajnaslozka!";
ProgressBar1.Value = 35;
Directory.Move(slozka + "nejakajinaslozka", slozka + nejakaslozka + "\\nejakajinaslozka");
toolStripStatusLabel1.Text = "Zjišťuji, zda existuje složka dalsislozka...";
ProgressBar1.Value = 40;
}
else
{
}
toolStripStatusLabel1.Text = "";
ProgressBar1.Value = 100;
const string message2 = "Operace byla úspěšně dokončena!";
const string caption2 = "Dokončeno!";
var result2 = MessageBox.Show(message2, caption2,
MessageBoxButtons.OK,
MessageBoxIcon.Information);
ProgressBar1.Value = 0;
}
else if (result == DialogResult.No)
{
ProgressBar1.Value = 100;
const string message1 = "Bohužel nemůžeme vytvořit něco, pokud existuje složka do které se má něco ukládat.";
const string caption1 = "Chyba";
var result1 = MessageBox.Show(message1, caption1,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
ProgressBar1.Value = 0;
}
}
Ty Path.Combine dodělám později, včera (vlastně dneska) se mi už do toho nechtělo.
Že to prostě pořád zjišťuje, ale když nezjistí tak nepokračuje dále. Je to zaseknuté pořád u toho zjišťování.
Jako že se program v tom místě zastaví a stojí? Musíš ten proces pak zabít?
Asi to máš rozbité. Zkusil jsi restartovat?
Ten tvůj kód je tak divně napsaný, že se mi nechce v něm přehrabovat.
Připomíná mi to špagety. Metoda by neměla být delší, než asi 15 řádek, což silně překračuješ. Délka řádku by neměla překročit 80 znaků.
Tak to buď rád, že jsem to tu nedal celé. To by ses asi musel
zbláznit.
Jinak nikdo další neví proč?
Krokuj, psal jsem ti to nahoře, tím zjistíš, na kterým řádku se to zasekne.
Já jsem ... Jo ono to fungovalo od začátku, jen já jsem tam něco
zblbnul. Díky moc za pomoc. Ještě jednou vás budu brzy potřebovat, ale v
jiném příspěvku
Zobrazeno 26 zpráv z 26.