PROBLEMA Problema codice c#

Pubblicità

TheLastViper

Nuovo Utente
Messaggi
8
Reazioni
2
Punteggio
5
Ciao ragazzi

Sto avendo un problema nel funzionamento di questo codice:
C#:
private void Button11_Click(object sender, EventArgs e)
        {
            int i = 1;
            string C = "0";
            PATH = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\rallycar.txt";
            PATH_2 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\options\counter.txt";
            File.ReadAllText(PATH_2);
            // File.Close();
            if (File.Exists(PATH) == true)
            {
                PATH = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\rallycar{i}.txt";
                File.Create(PATH);
                i++;
                C = Convert.ToString(i);
                File.ReadAllText(PATH_2);
                C.Replace(C, C);
            }
            else
            {
                File.Create(PATH);
            }
            if (C == "0")
            {
                File.WriteAllText(PATH_2, "0");
            }
            MessageBox.Show("CONFIGURATION SENT!", "SENT!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
Praticamente esso dovrebbe creare un file di testo la prima volta che viene clickato il button, poi verifica se giá esiste ed in tal caso ne crea uno nuovo aggiungendo un indice alla fine del nome del file. Questo indice viene memorizzato in un altro file di testo, ha una base di partenza che é uguale a "0" e che viene aggiornata ogni volta alla fine dell'esecuzione del codice del button in questione grazie ad una variabile di appoggio, in modo da incrementarsi. Questo file viene letto ogni volta che viene aperto il pulsante, cosí che poi io dovró assegnare all'indice i il valore attualmente memorizzato sul file di testo. Purtroppo, peró, il button riesce solo a creare la prima volta il file originale ed un nuovo file con un indice "1" alla fine del nome del file, forse perché il valore dell'indice non viene mai aggiornato sul file di appoggio, che continua a contenere sempre il valore originale, cioé "0". Potete aiutarmi? Grazie in anticipo :)
--- i due messaggi sono stati uniti ---
UPDATE - Sono riuscito a correggere l'errore descritto in precedenza ma ora ne sorge un altro nel seguente codice:

C#:
 private void Button11_Click(object sender, EventArgs e)
        {
            int i = 0;
            string tmp = "";
            if (checkDir() == false)
            {
                checkDir();
            }
            PATH = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\rallycar.txt";
            PATH_2 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\options\counter.txt";
            tmp = File.ReadAllText(PATH_2);
            if (tmp != "")
                i = Convert.ToInt16(tmp);
            if (File.Exists(PATH) == true)
            {
                i++;
                PATH = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\rallycar{i}.txt";
                File.WriteAllText(PATH, $"CAR SPECS: " +
                    $"MANUFACTURER: {textBox1.Text}; " +
                    $"MODEL: {textBox2.Text}; " +
                    $"HP: {textBox3.Text}; " +
                    $"CC: {textBox4.Text}; " +
                    $"TORQUE: {textBox5.Text}; " +
                    $"WEIGHT: {textBox6.Text}; " +
                    $"LENGHT: {textBox7.Text}; " +
                    $"WIDTH: {textBox8.Text}; " +
                    $"HEIGHT: {textBox9.Text}; " +
                    $"N. O. C. S.: {textBox10.Text}.");
                File.WriteAllText(PATH_2, i.ToString());
            }
            else
            {
                File.WriteAllText(PATH, $"CAR SPECS: " +
                    $"MANUFACTURER: {textBox1.Text}; " +
                    $"MODEL: {textBox2.Text}; " +
                    $"HP: {textBox3.Text}; " +
                    $"CC: {textBox4.Text}; " +
                    $"TORQUE: {textBox5.Text}; " +
                    $"WEIGHT: {textBox6.Text}; " +
                    $"LENGHT: {textBox7.Text}; " +
                    $"WIDTH: {textBox8.Text}; " +
                    $"HEIGHT: {textBox9.Text}; " +
                    $"N. O. C. S.: {textBox10.Text}.");
            }
        }

        private bool checkDir()
        {
            if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\options"))
            {
                MessageBox.Show("CONFIGURATION SENT!", "SENT!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return true;
            }
            else
            {
                object DIR = Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $@"\RALLYCARS\options");
                string PATH_X = DIR.ToString();
                File.Create(PATH_X + $@"\counter.txt");
                return false;
            }
        }

In pratica io vorrei che il programma controlli l'esistenza del percorso e, se non esiste, lo crei. Purtroppo non riesco a far funzionare questa casistica. Grazie ancora in anticipo per l'aiuto che mi darete.
 
Ultima modifica:
Un po' difficile seguire il tuo codice. Quello che fai e' pero' pericoloso, ma affidare un contatore in un file, se qualcosa va storto e' facile che questi contatori vadano persi e quindi tutti i tuoi dati risultino corrotti.
La migliore cosa da fare e' enumerare tutti i file nella tua cartella che inizino con "rallycar", trovo il contatore piu' grande (per esempio rallycar235.txt -> 235, incrementi di uno per creare un nuovo file.
Per enumerare i files, usa semplicemente Directory.Enumerate("blah-blah-blah\rallycar*.txt")
 
La migliore cosa da fare e' enumerare tutti i file nella tua cartella che inizino con "rallycar", trovo il contatore piu' grande (per esempio rallycar235.txt -> 235, incrementi di uno per creare un nuovo file.
Per enumerare i files, usa semplicemente Directory.Enumerate("blah-blah-blah\rallycar*.txt")

Grazie per la risposta, ho capito cosa intendi. E invece, per verificare l'esistenza di un path e, se non esiste, crearlo da zero come posso fare? Grazie ancora :)

Un po' difficile seguire il tuo codice.

Dov'é esattamente che trovi difficoltá nella comprensione del mio codice? Cosí capisco cosa cambiare

Quello che fai e' pero' pericoloso, ma affidare un contatore in un file, se qualcosa va storto e' facile che questi contatori vadano persi e quindi tutti i tuoi dati risultino corrotti.

Ok, chiaro, non avevo pensato a questa eventualitá.
 
Ultima modifica:
Grazie per la risposta, ho capito cosa intendi. E invece, per verificare l'esistenza di un path e, se non esiste, crearlo da zero come posso fare? Grazie ancora :)
Mi pare che lo stai facendo nella funzione checkDir(), usando la classe statica Directory

Dov'é esattamente che trovi difficoltá nella comprensione del mio codice? Cosí capisco cosa cambiare
Principalmente nel nome delle variabili, difficile capire cosa sia una variabile che chiami C e variabili che non sono definite nel codice pubblicato (tipo PATH e PATH2). Chiamare una variabile semplicemente aggiungendo un numero alla fine di una variabile gia' esistente non aiuta molto. Non sono un "talebano" per in nomi delle variabili, ma devono avere almeno un qualche senso altrimenti dopo un po' di tempo diventono incomprensibili anche per chi avesse scritto il codice (credimi, ci sono passato). Ho scritto una guida a riguardo, la trovi citata in uno dei post in rilievo.
 
Pubblicità
Pubblicità
Indietro
Top