Avatar billede Slettet bruger
01. januar 2009 - 13:27 Der er 17 kommentarer og
1 løsning

Problem med at læse buttonstatus

Hvis jeg bruger nedenstående kode i et nyt project så virker det fint men lægger jeg det så over i et eksisterende project så får jeg en
access vialation på 2 adresser.

Det er som om at den har problemer med at læse ButtonStatus på sprog formen...

Jeg kan simpelhen ikke lokalisere hvad der er problemet.


procedure TVinForm.FormActivate(Sender: TObject);
var
  MyIniFile: TIniFile;
  OldValue: String;
begin
if
FileExists('c:\windows\language.ini') then
vinform.Show
else
sprog.Show;

MyIniFile := TIniFile.Create('language.ini');    //opretter en ini fil
  OldValue:=MyIniFile.ReadString('RadioGroup','Buttonstatus','-1');
if OldValue<>'-1' then sprog.Fane1.ItemIndex:=StrToInt(OldValue);

  if
sprog.Fane1.ItemIndex = 0  then
CL:=loadIni(DK);
  if CL<>nil then
  begin
      fillProps([vinform],CL);

if
sprog.Fane1.ItemIndex = 1  then
CL:=loadIni(EN);
  if CL<>nil then
  begin
      fillProps([vinform],CL);
end;
  end;
  end;



procedure TVinForm.FormShow(Sender: TObject);
begin
CL:=loadIni(DK);
  if CL<>nil then
      fillProps([vinform],CL);
end;
Avatar billede borrisholt Novice
02. januar 2009 - 10:06 #1
Er di sikker på din sprog form er oprettet hvis file 'c:\windows\language.ini' eksisterer ?

Jens B
Avatar billede Slettet bruger
02. januar 2009 - 13:44 #2
Hvis den ikke eksisterer åbner sprog formen hvor man kan vælge sprog derefter oprettes language.ini.
Avatar billede kroning Nybegynder
02. januar 2009 - 14:18 #3
Det kunne være rart at vide i hvilke linier fejlen "access vialation" opstår.
Avatar billede Slettet bruger
02. januar 2009 - 18:22 #4
i denne linie tror jeg her har jeg en grøn pil:

if OldValue<>'-1' then sprog.Fane1.ItemIndex:=StrToInt(OldValue);
Avatar billede Slettet bruger
02. januar 2009 - 18:35 #5
Bliver sprog formen ikke created sammen med de andre forme som er i projectet?

For så kan jeg godt se hvorfor den buttonstatus ikke kan læses....
Avatar billede kroning Nybegynder
02. januar 2009 - 18:46 #6
Brug debuggeren "Trace Into" og fortæl præcis hvilke linier der fejler og hvilke værdier evt. variabler har.
Avatar billede Slettet bruger
02. januar 2009 - 19:34 #7
hmmm hvis jeg bruger Trace Into så åbnes en masse og det er for det meste componenter installeret i Delphi og det vil nok være for omfattende at sidde og paste alle de værdier og variabler.
Avatar billede Slettet bruger
02. januar 2009 - 19:37 #8
Hvis man går ud fra Borrisholt's kommentar med at sprog formen ikke er created på det tidspunkt så vil koden ikke kunne aflæse de værdier som er sat.
Avatar billede kroning Nybegynder
02. januar 2009 - 19:37 #9
Så brug "Step over" i din FormActivate procedure. Du burde sætte dig ind i hvordan debuggeren virker, den kan spare dig for mange timers arbejde.
Avatar billede kroning Nybegynder
02. januar 2009 - 19:40 #10
... indsæt et breakpoint i 1. linie i FormActivate proceduren.
Avatar billede Slettet bruger
02. januar 2009 - 21:03 #11
ok.... så ender vi ved

if OldValue<>'-1' then sprog.Fane1.ItemIndex:=StrToInt(OldValue);
Avatar billede kroning Nybegynder
02. januar 2009 - 21:33 #12
Så kan det jo kun være sprog eller Fane1 der ikke er oprettet.
Avatar billede Slettet bruger
02. januar 2009 - 21:56 #13
hmmm

formen bliver jo created

Application.CreateForm(TSprog, Sprog);


Det mest mærkelige er at laver jeg det som et testprogram med 2 forme "vinform" og "sprog" så kan den godt læse værdier i buttonstatus.
Avatar billede Slettet bruger
02. januar 2009 - 21:59 #14
Men er der en anden vej at læse de værdier i language.ini som skal afgøre om danmark.ini eller english.ini skal installeres.?
Avatar billede kroning Nybegynder
02. januar 2009 - 22:34 #15
Hvad er Fane1 for en komponent.
Avatar billede Slettet bruger
03. januar 2009 - 07:47 #16
Fane1 er en TradioGroup.
Avatar billede kroning Nybegynder
03. januar 2009 - 15:33 #17
ok
Avatar billede Slettet bruger
12. januar 2009 - 09:57 #18
jeg nedlægger lige spørgsmålet og vender tilbage senere..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester