Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-10-2010, 23:09   #1
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
[C#] Problema GetPrivateProfileString

Ciao a tutti sto programmando una funzione che mi deve leggere il valore di "language" che è "ita" da questo file INI:
Codice:
[config]
language = ita
version = 2.0
Fatto sta che per qualche motivo l'operazione non va a buon fine!

Questa è la classe contenente solo la funzione:
Codice:
public class INI_reader
    {
        [DllImport("kernel32.dll")]
        static extern uint GetPrivateProfileString(
      string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);

        public static string ReadKey(string file_path, string Section, string Key)
        {
            StringBuilder sb = new StringBuilder(500);
            uint res = GetPrivateProfileString(Section, Key, "ERROR", sb, sb.Capacity, file_path);
            return sb.ToString();
        }
    }
Gli passo percorso_file_ini, sezione ("config") e chiave ("language").

Mi viene sempre restituito "ERROR" che indica che l'operazione non è andata a buon fine.

Sapete dov'è il problema??
Grazie mille in anticipo
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2010, 08:08   #2
giangian2
Member
 
L'Avatar di giangian2
 
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
Quote:
Originariamente inviato da Andrea993 Guarda i messaggi
sezione ("config") e chiave ("language").
ciao
non ci vanno le parentesi.

sezione "config" e chiave "language"
giangian2 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2010, 16:18   #3
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
sì so era solo per fart capire cosa passo alla funzione!

La funzione la chiamo così:
Codice:
lingua = INI.INI_reader.ReadKey(Directory.GetCurrentDirectory() + @"\config\config.conf", "config", "version");
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2010, 08:19   #4
giangian2
Member
 
L'Avatar di giangian2
 
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
La funzione "Directory.GetCurrentDirectory()" ritorna la path corrente, ma non è detto che sia quella in cui si trova l'eseguibile.
Se tu crei un collegamento all'eseguibile e nelle proprietà cambi la directory di avvio la funzione "Directory.GetCurrentDirectory()" ritorna la path impostata.
Detto questo in debug (da visual studio) la path è "<path del progetto>\bin\debug" (a meno che non sia stata modificata con Directory.SetCurrentDirectory).
giangian2 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2010, 16:23   #5
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
La cartella è quella giusta, ho gia verificato con un breakpoint
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2010, 16:57   #6
giangian2
Member
 
L'Avatar di giangian2
 
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
Quote:
Originariamente inviato da Andrea993 Guarda i messaggi
La cartella è quella giusta, ho gia verificato con un breakpoint
allora non ne ho proprio idea... ho copiato pari pari il tuo pezzo di codice ed ho creato in file come il tuo e da me funziona correttamente.
Prova a modificare l'import della funzione come segue

[DllImport("kernel32.dll", SetLastError=true)]
static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);

poi una volta fatta la chiamata prova a verificare il codice d'errore che ha settato la GetPrivateProfileString chiamando:

Marshal.GetLastWin32Error()

Spero ti possa essere di aiuto.

ciao ciao
giangian2 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 11:35   #7
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
Puoi spiegarti meglio che non ho mai usato questa procedura??...grazie mille
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 16:53   #8
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
Mi dice che il numero dell'errore è 2!
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 08:11   #9
giangian2
Member
 
L'Avatar di giangian2
 
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
Quote:
Originariamente inviato da Andrea993 Guarda i messaggi
Mi dice che il numero dell'errore è 2!
ciao,
da MSDN il codice di errore 2 indica "File non trovato".
Sei sicuro che la path del file impostata da codice sia esattamente la path in cui ha creato il file??
giangian2 è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2011, 17:28   #10
Andrea993
Member
 
Iscritto dal: Jun 2010
Messaggi: 35
Sì, sicursissimo ho provato anche con altri file ma niente
Andrea993 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Microsoft Highlight Reels: clip e montag...
Una nuova partnership per i TV Panasonic...
NIO batte il suo record di scambio batte...
Verona ha i bus del futuro: 34 mezzi ele...
Changan risponde presente: batterie allo...
Creatore di Telegram accusato di terrori...
Microsoft prepara molte novità le...
Alcolock obbligatorio da oggi: ecco chi ...
Intel Unified Core: un annuncio di lavor...
Nikon rinnova il suo telezoom profession...
Ci sarà una nuova serie di Evange...
ESA Space Rider: superato un test per lo...
Horse e Repsol hanno costruito il protot...
Beats Solo 4 a 111€: le iconiche cuffie ...
IBM crolla in Borsa (-13%) dopo l'annunc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v