|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
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 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();
}
}
Mi viene sempre restituito "ERROR" che indica che l'operazione non è andata a buon fine. Sapete dov'è il problema?? Grazie mille in anticipo |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
|
|
|
|
|
|
#3 |
|
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"); |
|
|
|
|
|
#4 |
|
Member
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). |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
La cartella è quella giusta, ho gia verificato con un breakpoint
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
Quote:
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 |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Puoi spiegarti meglio che non ho mai usato questa procedura??...grazie mille
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Mi dice che il numero dell'errore è 2!
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Jun 2010
Messaggi: 35
|
Sì, sicursissimo ho provato anche con altri file ma niente
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:50.




















