Problem med recentlista-skriva till registret Jag hadde gjort en markering Sorry saw, slarvigt av mig att missa det. Ännu bättre är att alltid använda CreateSubKey (eller vad de nu hette) pga. att om nyckeln inte finns så skapas den. Oavsett om den fanns eller inte sedan tidigare öppnas den. Dvs. den gör den kod du skrev ;) Tack Onkelborg, hade ingen aning om detta...troligen kommer jag dock att fortsätta skriva på mitt sätt, eftersom jag är ett stort fan av tydlighet när det gäller programmering. Coolt att känna till, men jag vill inte skriva kod så, har väldigt många principer som påverkar mitt vardagsliv såväl som mitt arbetsliv :-) Tack för kanonbra hjälp.Problem med recentlista-skriva till registret
Så här ser classen ut:
<code>
public void saveMenu(string fFilNamn)
{
try
{
FileInfo finfo = new FileInfo(fFilNamn);
RegistryKey key = Registry.CurrentUser;
key = key.OpenSubKey("Software\\SAW\\Music_Translater_2\\FilLista\\",true);
if(key != null)
{
myArray = new ArrayList();
String[] filename = key.GetValueNames();
IEnumerator iEnum = filename.GetEnumerator();
while(iEnum.MoveNext())
{
String val = (String)iEnum.Current;
String data = (String)key.GetValue(val);
myArray.Add(data);
}
key.Close();
}
RegistryKey regKey = Registry.LocalMachine.OpenSubKey("Software\\Music_Translater_2", true);
if(regKey != null)
{
try
{
regKey.DeleteSubKey("FilLista",true);
regKey.Flush();
regKey.Close();
}
catch(Exception fel)
{
MessageBox.Show(fel.Message,"Fel i deleta FilLista");
}
}
AddRecent(fFilNamn);
key = Registry.CurrentUser;
key = key.OpenSubKey("Software\\SAW\\Music_Translater_2\\FilLista\\",true);
if(myArray.Count < 1)
{
myArray.Sort( 1, 3, null );
}
for(int i = 0; i < myArray.Count;++i)
{
finfo = new FileInfo(myArray[i].ToString());
key.SetValue(finfo.Name,myArray[i].ToString());//<------------------------------------här är problemet
Info.Text="Recent file OK!";
}
}
catch(Exception fel)
{
MessageBox.Show(fel.Message,"Fel i skriva till registret");
}
}
</code>
Error som jag får:
<code>
Objectreferensen har inte angetts till en instans av ett objekt
</code>Vad är det som jag missar?Sv: Problem med recentlista-skriva till registret
key.SetValue(finfo.Name,myArray[i].ToString()); //här är problemet Sv: Problem med recentlista-skriva till registret
Vad jag kan se kan det bero på att nyckeln HKEY_CurrentUser\Software\SAW\Music_Translater_2\FilLista inte existerar och att OpenSubKey därför returnerar null. Kontrollera om key==null efter att du öppnat den och skapa den om i så fall :
<code>
key = key.OpenSubKey("Software\\SAW\\Music_Translater_2\\FilLista\\",true);
if (key==null)
key=Registry.CurrentUser.CreateSubKey("Software\\SAW\\Music_Translater_2\\FilLista\\");
</code>
Möjligen kan ju även fInfo bli null om filen i myArray[i].ToString() inte existerar :
<code>
finfo = new FileInfo(myArray[i].ToString());
</code>
Detta är de två saker jag först skulle kolla upp. Lycka till.../PerSv: Problem med recentlista-skriva till registret
Sv: Problem med recentlista-skriva till registret
Sv: Problem med recentlista-skriva till registret
<code>
if (key==null)
key=Registry.CurrentUser.CreateSubKey("Software\\SAW\\Music_Translater_2\\FilLista\\");
</code> detta löste allting.
Tyvärr så vill han inte vara med på Onkelborgs förslag.
Nu kan jag ta det lugnt för idag.