» »

[visual C#] Na drugem računalniku se ne zažene

[visual C#] Na drugem računalniku se ne zažene

Beezgetz ::

Živjo

Zanima me, ali obstajajo znani razlogi, zakaj se aplikacijaX, ki sem jo sestavil in pri meni dela, ne zažene na drugem računalniku, ki je v angliji, ter ima winse in .Net Framework inštaliran?
Poslal sem mu tudi eno enostavno aplikacijoY (samo en vnos, en gumb, en izpis) in ta dela. Mogoče dela zaradi tega, ker ne vsebuje private void FormY_Load(object sender,...), ne vem,...

Imam aplikacijoX, ki na začetku ustvari folder na c-ju, ki je root node za treeView1.

TreeNode rig = new TreeNode("All Projects");
private void Form1_Load(object sender, EventArgs e)
{
// za operacije z miško
treeView1.MouseDoubleClick += new MouseEventHandler(dvakratLevo);
// Evo, tu ustvarim folder
Directory.CreateDirectory("c:/All Projects");
// tu pa nafilam treeView1
DirectoryInfo root = new DirectoryInfo("c:/All Projects");
treeView1.Nodes.Add(rig);
this.ShowNodes(root, treeView1.Nodes[0]);
toolStripStatusLabel1.Text = "Ready to work!";
}

Ali gre mogoče za zapis '//' ali '\\' ki je tam drugačen?
Najbrž ni razlike med veliko in malo črko c, C?

ajm open for sadžeščns
tenk juri veliku mačku, Beezgetz

AndrejS ::

.NET Framework obstajaja več verzij (1.0 ,1.1 , 2.0 ..... ) morda nima prave verzije

Beezgetz ::

Kljub temu, da mu dela aplikacijaY?
ok, se bom pozanimal, kero verzijo ima.

Še kakšen predlog?
Hvala, Beezgetz

morbo ::

Odsek kjer misliš da je hrošč postavi v prestreznik napak, pa boš dosti bližje odgovoru. Try/catch bloke je dobro postavit na vse "kritične" odseke (šarjenje po disku je že eden takih).

AndrejS ::

Nisem pozorno prebral tvojega prvega posta. se opravičujem.
Problem je verjetno tukaj ; Directory.CreateDirectory("c:/All Projects"); Verjetno nima pravice za ustvarjenje imenika na rootu

Beezgetz ::

Živijo!

@ morbo; v tej obliki:

private void Form1_Load(object sender, EventArgs e)
{
try{
treeView1.MouseDoubleClick += new MouseEventHandler(dvakratLevo);
try{
Directory.CreateDirectory("c:/All Projects");
try{
DirectoryInfo root = new DirectoryInfo("c:/All Projects");
try{
treeView1.Nodes.Add(rig);
try{
this.ShowNodes(root, treeView1.Nodes[0]);
toolStripStatusLabel1.Text = "Ready to work!";}
catch{ MessageBox.Show("Napaka pri..");}}
catch {MessageBox.Show("Napaka pri..");}}
catch {MessageBox.Show("Napaka pri..");}}
catch {MessageBox.Show("Napaka pri..");}}
catch {MessageBox.Show("Napaka pri..");}
}

ali tej obliki:

private void Form1_Load(object sender, EventArgs e)
{
try
treeView1.MouseDoubleClick += new MouseEventHandler(dvakratLevo);
catch
try
Directory.CreateDirectory("c:/All Projects");
catch
try
DirectoryInfo root = new DirectoryInfo("c:/All Projects");
catch
try
treeView1.Nodes.Add(rig);
catch
try
this.ShowNodes(root, treeView1.Nodes[0]);
toolStripStatusLabel1.Text = "Ready to work!";
catch
}

Kje je še pametno postavit try/catch?



@ AndrejS; ...pravice za ustvarjenje imenika na rootu... Kaj pa to pomeni? Da ukaz Directory ne sme ustvarit na c-ju mapo 'All Projects'?
okej, kdo pa izdaja take ukaze? Kako ga prepričam, da ustvari mapo?


V osnovi sem dal da shranjuje na c-ju zato, ker vsak računalnik naj bi imel c...
Zdaj pa še ta udarc. Ne dovoljuje ustvarjanja map...

Vnaprej hvala obema

morbo ::

enostavno takole:

try {

treeView1.MouseDoubleClick += new MouseEventHandler(dvakratLevo);
Directory.CreateDirectory("c:/All Projects");
DirectoryInfo root = new DirectoryInfo("c:/All Projects");
treeView1.Nodes.Add(rig);

} catch (Exception e) {
MessageBox.Show(e.Message);
}

Opis napake bi ti moral dat dovolj informacij kaj je narobe.

morbo ::

Aja, try/catch postaviš na kritičnih odsekih - to so vsi tisti, ki kličejo metode katere prožijo (throw) izjeme - če podržiš miško na imenu metode boš videl seznam izjem, ki jih lahko proži.

Beezgetz ::

Hej morbo!

aha, se pravi samo en try/catch (Exception e) {
MessageBox.Show(e.Message);}

Glede metod, si nisem še čist na jasnem, Bom pa poiskusil tvoj nasvet z miško!
Directory.CreateDirectory je metoda?
private void Racun je metoda?

Hvala, Beezgetz

morbo ::

Hja, metoda je proces ki lahko prejme neke parametre, jih obdela in vrača vrednost (oz. void), za razliko do lastnosti, ki le hranijo neko vrednost. Metode prepoznaš po oklepajih med katere zapišeš parametre (oz. praznih oklepajih, če metoda ne zahteva parametrov). V code completion seznamu, so metode tisto z ikonco viola "radirke", al kar je že...:)

Directory.CreateDirectory() je metoda, private void Racun() { } pa najava metode z imenom Racun

catch (Exception e) ti bo ulovil vse tipe napak v bloku (prvo ki se bo zgodila), ker je razred Exception nadrazred vseh napak (izjem). Če hočeš obdelat le določene izjeme lahko uporabiš specifične razrede npr: FileNotFoundException. V tvojem primeru pač ne veš kakšna napaka se zgodi, zato iščeš vse.

Za celotno lokacijo kjer se je zgodila izjema (tudi število vrstice!) dodaj v msgbox še: e.StackTrace, torej - MessageBox.Show(e.Message + "\n" + e.StackTrace);

Beezgetz ::

huh, kul.
pa hvala za exeption hint.

kaj pa tisto, kar pravi AndrejS?
O 'Problem je verjetno tukaj ; Directory.CreateDirectory("c:/All Projects"); Verjetno nima pravice za ustvarjenje imenika na rootu'
Kaj to pomeni? Da ukaz Directory ne sme ustvarit na c-ju mapo 'All Projects'?

Hvala. Beezgetz

AndrejS ::

Ko boš postavil try catch blocke boš itak točno videl kje je problem

Beezgetz ::

kul! Postavljeno.

Sem že poslal. Zdaj bom počakal kaj pravi...

Hvala vama še enkrat, Beezgetz


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] try/catch, v katerem gradniku je napaka

Oddelek: Programiranje
10955 (693) japol
»

[c#] iz class v class

Oddelek: Programiranje
5811 (685) darkolord
»

Poganjanje zunanjih aplikacij iz C#

Oddelek: Programiranje
7944 (775) BlueRunner
»

[c#] Primerjanje datotek ...

Oddelek: Programiranje
5830 (747) OmegaM
»

[visual C#] dogodek na Form2 sproži dogodek na Form1

Oddelek: Programiranje
101296 (1212) Beezgetz

Več podobnih tem