var fn : string; IniFile: TInifile; i: integer; begin fn := extractFilePath(ParamStr(0))+'folders.dat'; if FileExists(fn) then with TFileStream.Create(fn, fmOpenRead) do try ReadComponent(lvinbox); ReadComponent(lvoutbox); finally Free; end; // try TBXSetTheme('Office11Adaptive'); if FlatTabControl1.ActiveTab = 0 then begin lvInbox.Visible := true; lvOutbox.Visible := false end else begin lvInbox.Visible := false; lvOutbox.Visible := true; end; st := TStringList.Create; IniFile := TInifile.create(ExtractFilePath(Application.ExeName) + 'settings.ini'); try IniFile.ReadSectionValues('Contacts', st); finally IniFile.Free; end; for i := 0 to st.Count - 1 do ListBox1.Items.Add(st.names[i]);
Har rettet lidt i det. Der var ikke det store galt udover at du glemte at frigive st (som er et DeFacto navn for en streng, ikke en liste af strenge).
var fn : string; begin fn := extractFilePath(ParamStr(0))+'folders.dat'; if FileExists(fn) then with TFileStream.Create(fn, fmOpenRead) do try ReadComponent(lvinbox); ReadComponent(lvoutbox); finally Free; end; // try
TBXSetTheme('Office11Adaptive');
lvInbox.Visible := FlatTabControl1.ActiveTab = 0; lvOutbox.Visible := not lvInbox.Visible;
with TInifile.create(ExtractFilePath(Application.ExeName) + 'settings.ini') do try // Not sure whether you need to clear ListBox1 before you read items. ReadSectionValues('Contacts', ListBox1.Items); finally Free; end; // try
Mit gæt er, at du TBXSetTheme, sådan som T'et indikerer, er en klasse, ikke et allokeret objekt. Det er sikkert fejlen ligger.
Mit gæt er at linien med TBXSetTheme(), sådan som T'et indikerer, er en klasse, ikke et allokeret objekt. Du er klar over forskellen, ikke? Det er sikkert der fejlen ligger.
P.S. mht. mine rettelser. Jeg er hyppig bruger af "with" og "try"'s, men det er et følsomt område for Delphi-programmører. Jeg sparer en masse tekst og kan ikke se at koden er mindre besværlig at læse. Modstandere vil påstå, at når man "with"'er så kan man ikke være helt sikker på hvilket objekt man bruger - og de har også ret; det kan ske at compileren vælger forkert, men det er som regel pga. dårlig programmering.
Andre nørdede ting er:
Edit1.Visible = (i = 10);
Hvis det boolske udtryk er sandt bliver Edit1 synlig. Jeg synes dette noget mere elegant end:
if (i = 10) then Edit1.Visible := true else Edit1.Visible := false;
Når jeg rigtig kammer over så bliver der skrevet kode som dette...:
inc(lgd,integer(length(st) < 7));
Hvis strengen st er mindre end 7, så læg en til variablen lgd. Det er så grimt at det næsten er C'sk. ;-)
jeg begynde forfra, og så forsvandt problemet... ved ikke lige hvad det var...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.