Access Violation

Für Fragen von Einsteigern und Programmieranfängern...
Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Access Violation

Beitrag von Giss »

Hallo zusammen,

ich habe das Problem, dass unten stehender Code beim kompilieren keine Fehlermeldung ergibt aber zur Laufzeit unter Win XP dann einen Fehler Access Violation ergibt. Habt ihr eine Idee, warum?

Code: Alles auswählen

 
var
kalk_text:Tstrings;
 
begin
  kalk_text:=TStringList.Create;
  try
  Kalk_Text:=Memo1.Lines;
  Kalk_Text.SaveToFile('d:\test.txt');
  finally
  Kalk_Text.Free;
  end;
end;

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Access Violation

Beitrag von theo »

mit
Kalk_Text:=Memo1.Lines;
setzt du Kalk_Text gleich mit Memo1.Lines und gibst es anschliessend frei (aber nicht mehr die StringList!).
Das schmeckt dem Memo nicht, wenn du ihm sein "Lines" wegnimmst.

Mach so:
Kalk_Text.Assign(Memo1.Lines);

Oder wenn es nur um den Code in Snippet geht, reicht Memo1.Lines.SaveToFile

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

Hallo theo,

danke für deine Hinweise. Habe eine andere StringList genauso gefüllt und jetzt entsprechend geändert.

Leider bleibt aber der Fehler. Sowohl beim Abspeichern der der Liste als auch direkt des Memos. Die Datei wird noch ordentlich gespeichert.

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

Ich habe das jetzt folgendermaßen geändert:

Code: Alles auswählen

 
  Kalk_Text:=TStringList.Create;
  try
  Kalk_Text.Assign(Memo1.Lines);
  kalk_text.SaveToFile('d:\test.txt');
  finally
  ShowMessage('Datei wurde gespeichert');
  end;
   kalk_text.free;
  Close;
 
Das ShowMessage wird jetzt auch abgearbeitet. Danach kommt es jetzt zum dem Fehler. Hat das .free Einfluß?

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Access Violation

Beitrag von theo »

Dann liegt der Fehler wohl in anderen Teilen deines Codes.

Hast du mal probiert die Stringlist als solche zu deklarieren?

var
kalk_text:TStringList;

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

Ja, gerade eben. ;-)

Leider auch kein positiveres Ergebnis.

Sobald ich diesen blöden Part mit der Stringlist und dem wegspeichern auskommentiere funktioniert das ganze auch wieder wunderbar ...

In einem anderen Formular funktioniert das ganze auch wunderbar. Nur dass ich da das Speichern über einen Dialog mache. Doch auch wenn ich das Speichern weglasse, gibt es einen Access Violation.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Access Violation

Beitrag von Michl »

Falls ich mich einmischen darf?!

Ich habs gerade getestet:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  kalk_text:TStringlist;
begin
  kalk_text:=TStringlist.Create;
  try
  Kalk_Text.Assign(Memo1.Lines);
  Kalk_Text.SaveToFile('c:\1\test.txt');
  finally
  Kalk_Text.Free;
  end;
end;       
funktioniert wunderbar (Lazarus 1.0.8/Win32)

Evtl. hast Du keine Schreibrechte auf "D:\test.txt"?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Access Violation

Beitrag von theo »

Michl hat geschrieben: Evtl. hast Du keine Schreibrechte auf "D:\test.txt"?!
Naja, aber Access Violation? Da müsste er doch einen ordentlichen Fehler ausgeben (Can't create file.. oder so).

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Access Violation

Beitrag von Michl »

Naja, aber Access Violation? Da müsste er doch einen ordentlichen Fehler ausgeben (Can't create file.. oder so).
Das stimmt, die Fehlermeldung lautet "Unable to create file..."!

War nur ne Idee, da der vorgenannte Code ja bei mir funzt!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Access Violation

Beitrag von theo »

Giss hat geschrieben: Doch auch wenn ich das Speichern weglasse, gibt es einen Access Violation.
Meine Diagnose: Du suchst am falschen Ort. Der Fehler ist in Teilen deines Codes, die du nicht zeigst.
Das Close; ist vllt. auch nicht so schlau, kommt aber auf den Kontext an.

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

Das mit dem Close habe ich auch schon gedacht.

Es handelt sich um ein Unterformular, das ich dann schließen möchte. Nehme ich das Close raus, funktioniert es auch wieder ... bis ich das Hauptformular schließen möchte. Dann wieder dieselbe Fehlermeldung. Nur fehlen mir spätestens jetzt die Hintergründe ... kann ich ein Unterformular auch anders schließen?

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Access Violation

Beitrag von Michl »

Um Dir helfen zu können, müsstest Du etwas mehr von Deinem Code zeigen oder Deine Zielstellung deutlicher machen!
Es kann sein, daß Du da ein paar Dinge durcheinanderbringst wie: .Show, .Showmodal, .visible etc.

Um Theo zu zitieren: http://www.tty1.net/smart-questions_de.html#goal

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

OK. Ich rufe das Formular auf in Formular main

Code: Alles auswählen

 
procedure TForm1.MenuItem13Click(Sender: TObject);
 
var
f : TForm7;
 
begin
   f := TForm7.Create(nil);                      // Neues Formular aufmachen
   try
     f.ShowModal();
   finally
     FreeAndNil(f);
   end;
end; 
 

Und jetzt schicke ich auch den Code von Formular7:

Code: Alles auswählen

 
var
  Form7: TForm7;
  h1 : Real;
 
  v :array [1..49] of String;
  Ergebnis : array [1..49] of real;
 
  store : boolean;
  Kalk_text : TStringList;
 
implementation
 
uses
main in 'main.pas';
 
{ TForm7 }
 
procedure TForm7.Button1Click(Sender: TObject);              //Berechnung
begin
 
  h1:=RoundTo(StrToFloat(Edit3.Text)+StrToFloat(Edit6.Text)+StrToFloat(Edit9.Text)+
      StrToFloat(Edit12.Text)+StrToFloat(Edit15.Text)+StrToFloat(Edit18.Text)+
      StrToFloat(Edit21.Text)+StrToFloat(Edit24.Text)+StrToFloat(Edit27.Text)+
      StrToFloat(Edit30.Text)+StrToFloat(Edit33.Text)+StrToFloat(Edit36.Text)+
      StrToFloat(Edit39.Text)+StrToFloat(Edit42.Text),-2);
  Ergebnis[45]:=RoundTo(StrToFloat(Edit43.Text)*h1*0.15, -2);
  Edit45.Text:=FloatToStr(Ergebnis[45]);
  Edit49.Text:=IntToStr(round(h1)+round(StrToFloat(Edit45.Text))+
                        round(StrtoFloat(Edit48.Text)));
 
  v[1]:=(Edit1.Text); v[3]:=(Edit3.Text);
  v[4]:=(Edit4.Text); v[6]:=(Edit6.Text);
  v[7]:=(Edit7.Text); v[9]:=(Edit9.Text);
  v[10]:=(Edit10.Text); v[12]:=(Edit12.Text);
  v[13]:=(Edit13.Text); v[15]:=(Edit15.Text);
  v[16]:=(Edit16.Text); v[18]:=(Edit18.Text);
  v[19]:=(Edit19.Text); v[21]:=(Edit21.Text);
  v[22]:=(Edit22.Text); v[24]:=(Edit24.Text);
  v[25]:=(Edit25.Text); v[27]:=(Edit27.Text);
  v[28]:=(Edit28.Text); v[30]:=(Edit30.Text);
  v[31]:=(Edit31.Text); v[33]:=(Edit33.Text);
  v[34]:=(Edit34.Text); v[36]:=(Edit36.Text);
  v[37]:=(Edit37.Text); v[39]:=(Edit39.Text);
  v[40]:=(Edit40.Text); v[42]:=(Edit42.Text);
  v[43]:=(Edit43.Text); v[45]:=(Edit45.Text);
  v[46]:=(Edit46.Text); v[48]:=(Edit48.Text);
  v[49]:=(Edit49.Text);
 
  v[2]:=(Edit2.Text);
  v[5]:=(Edit5.Text);
  v[8]:=(Edit8.Text);
  v[11]:=(Edit11.Text);
  v[14]:=(Edit14.Text);
  v[17]:=(Edit17.Text);
  v[20]:=(Edit20.Text);
  v[23]:=(Edit23.Text);
  v[26]:=(Edit26.Text);
  v[29]:=(Edit29.Text);
  v[32]:=(Edit32.Text);
  v[35]:=(Edit35.Text);
  v[38]:=(Edit38.Text);
  v[41]:=(Edit41.Text);
  v[47]:=(Edit47.Text);
 
  //sitz:=true;
end;
 
procedure TForm7.Button2Click(Sender: TObject);
 
begin
  v[1]:=(Edit1.Text); v[3]:=(Edit3.Text);
  v[4]:=(Edit4.Text); v[6]:=(Edit6.Text);
  v[7]:=(Edit7.Text); v[9]:=(Edit9.Text);
  v[10]:=(Edit10.Text); v[12]:=(Edit12.Text);
  v[13]:=(Edit13.Text); v[15]:=(Edit15.Text);
  v[16]:=(Edit16.Text); v[18]:=(Edit18.Text);
  v[19]:=(Edit19.Text); v[21]:=(Edit21.Text);
  v[22]:=(Edit22.Text); v[24]:=(Edit24.Text);
  v[25]:=(Edit25.Text); v[27]:=(Edit27.Text);
  v[28]:=(Edit28.Text); v[30]:=(Edit30.Text);
  v[31]:=(Edit31.Text); v[33]:=(Edit33.Text);
  v[34]:=(Edit34.Text); v[36]:=(Edit36.Text);
  v[37]:=(Edit37.Text); v[39]:=(Edit39.Text);
  v[40]:=(Edit40.Text); v[42]:=(Edit42.Text);
  v[43]:=(Edit43.Text); v[45]:=(Edit45.Text);
  v[46]:=(Edit46.Text); v[48]:=(Edit48.Text);
 
 
  v[2]:=(Edit2.Text);
  v[5]:=(Edit5.Text);
  v[8]:=(Edit8.Text);
  v[11]:=(Edit11.Text);
  v[14]:=(Edit14.Text);
  v[17]:=(Edit17.Text);
  v[20]:=(Edit20.Text);
  v[23]:=(Edit23.Text);
  v[26]:=(Edit26.Text);
  v[29]:=(Edit29.Text);
  v[32]:=(Edit32.Text);
  v[35]:=(Edit35.Text);
  v[38]:=(Edit38.Text);
  v[41]:=(Edit41.Text);
  v[47]:=(Edit47.Text);
 
 
  {Kalk_Text:=TStringList.Create;
  try
  Kalk_Text.Clear;
  Kalk_Text.AddStrings(Memo1.Lines);
  if SaveDialog1.Execute then kalk_text.SaveToFile(SaveDialog1.FileName);
  //finally
  ShowMessage('Datei wurde gespeichert');
  //end; }
  store:=true;
  //kalk_text.free;
  Close;
end;
 
procedure TForm7.Edit10Exit(Sender: TObject);
begin
  Ergebnis[12]:=RoundTo(StrToFloat(Edit10.Text)*StrtoFloat(Edit11.Text),-2);
  Edit12.Text:=FloatToStr(Ergebnis[12]);
  if StrToFloat(Edit10.Text)>0 then
    begin
      Edit10.Color:=(clSkyBlue);
      Memo1.Lines.add(Edit10.Text +' x '+ label7.Caption);
    end
  else Edit10.Color:=(clWindow);
end;
 
procedure TForm7.Edit13Exit(Sender: TObject);
begin
    Ergebnis[15]:=RoundTo(StrToFloat(Edit13.Text)*StrtoFloat(Edit14.Text),-2);
    Edit15.Text:=FloatToStr(Ergebnis[15]);
    if StrToFloat(Edit13.Text)>0 then
      begin
        Edit13.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit13.Text+' x '+Label8.Caption);
      end
  else Edit13.Color:=(clWindow);
end;
 
procedure TForm7.Edit16Exit(Sender: TObject);
begin
    Ergebnis[18]:=RoundTo(StrToFloat(Edit16.Text)*StrtoFloat(Edit17.Text),-2);
    Edit18.Text:=FloatToStr(Ergebnis[18]);
    if StrToFloat(Edit16.Text)>0 then
      begin
        Edit16.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit16.Text+' x '+Label9.Caption);
      end
    else Edit16.Color:=(clWindow);
end;
 
procedure TForm7.Edit19Exit(Sender: TObject);
begin
    Ergebnis[21]:=RoundTo(StrToFloat(Edit19.Text)*StrtoFloat(Edit20.Text),-2);
    Edit21.Text:=FloatToStr(Ergebnis[21]);
    if StrToFloat(Edit19.Text)>0 then
      begin
        Edit19.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit19.Text+' x '+Label10.Caption);
      end
    else Edit19.Color:=(clWindow);
end;
 
procedure TForm7.Edit1Exit(Sender: TObject);
begin
  Ergebnis[3]:=RoundTo(StrToFloat(Edit1.Text)*StrtoFloat(Edit2.Text),-2);
  Edit3.Text:=FloatToStr(Ergebnis[3]);
  if StrToFloat(Edit1.Text)>0 then
    begin
      Edit1.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit1.Text+' x '+Label4.Caption);
    end
  else Edit1.Color:=(clWindow);
end;
 
procedure TForm7.Edit22Exit(Sender: TObject);
begin
    Ergebnis[22]:=RoundTo(StrToFloat(Edit22.Text)*StrtoFloat(Edit23.Text),-2);
    Edit22.Text:=FloatToStr(Ergebnis[22]);
    if StrToFloat(Edit22.Text)>0 then
      begin
        Edit22.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit22.Text+' x '+Label11.Caption);
      end
  else Edit22.Color:=(clWindow);
end;
 
procedure TForm7.Edit25Exit(Sender: TObject);
begin
    Ergebnis[27]:=RoundTo(StrToFloat(Edit25.Text)*StrtoFloat(Edit26.Text),-2);
    Edit27.Text:=FloatToStr(Ergebnis[27]);
    if StrToFloat(Edit25.Text)>0 then
      begin
        Edit25.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit25.Text+' x '+Label12.Caption);
      end
  else Edit25.Color:=(clWindow);
end;
 
procedure TForm7.Edit28Exit(Sender: TObject);
begin
    Ergebnis[30]:=RoundTo(StrToFloat(Edit28.Text)*StrtoFloat(Edit29.Text),-2);
    Edit30.Text:=FloatToStr(Ergebnis[30]);
    if StrToFloat(Edit28.Text)>0 then
      begin
        Edit28.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit28.Text+' x '+Label13.Caption);
      end
  else Edit28.Color:=(clWindow);
end;
 
procedure TForm7.Edit31Exit(Sender: TObject);
begin
    Ergebnis[33]:=RoundTo(StrToFloat(Edit31.Text)*StrtoFloat(Edit32.Text),-2);
    Edit33.Text:=FloatToStr(Ergebnis[33]);
    if StrToFloat(Edit31.Text)>0 then
      begin
        Edit31.Color:=(clSkyBlue);
        Memo1.Lines.Add(Edit31.Text+' x '+Label14.Caption);
      end
  else Edit31.Color:=(clWindow);
end;
 
procedure TForm7.Edit34Exit(Sender: TObject);
begin
  Ergebnis[36]:=RoundTo(StrToFloat(Edit34.Text)*StrtoFloat(Edit35.Text),-2);
  Edit36.Text:=FloatToStr(Ergebnis[36]);
  if StrToFloat(Edit34.Text)>0 then
    begin
      Edit34.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit34.Text+' x '+Label15.Caption);
    end
  else Edit34.Color:=(clWindow);
end;
 
procedure TForm7.Edit37Exit(Sender: TObject);
begin
  Ergebnis[39]:=RoundTo(StrToFloat(Edit37.Text)*StrtoFloat(Edit38.Text),-2);
  Edit39.Text:=FloatToStr(Ergebnis[39]);
  if StrToFloat(Edit37.Text)>0 then
    begin
      Edit37.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit37.Text+' x '+Label16.Caption);
    end
  else Edit37.Color:=(clWindow);
end;
 
procedure TForm7.Edit40Exit(Sender: TObject);
begin
  Ergebnis[42]:=RoundTo(StrToFloat(Edit40.Text)*StrtoFloat(Edit41.Text),-2);
  Edit42.Text:=FloatToStr(Ergebnis[42]);
  if StrToFloat(Edit40.Text)>0 then
    begin
      Edit40.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit40.Text+' x '+Label17.Caption);
    end
  else Edit40.Color:=(clWindow);
end;
 
procedure TForm7.Edit43Exit(Sender: TObject);
begin
  h1:=RoundTo(StrToFloat(Edit3.Text)+StrToFloat(Edit6.Text)+StrToFloat(Edit9.Text)+
      StrToFloat(Edit12.Text)+StrToFloat(Edit15.Text)+StrToFloat(Edit18.Text)+
      StrToFloat(Edit21.Text)+StrToFloat(Edit24.Text)+StrToFloat(Edit27.Text)+
      StrToFloat(Edit30.Text)+StrToFloat(Edit33.Text)+StrToFloat(Edit36.Text)+
      StrToFloat(Edit39.Text)+StrToFloat(Edit42.Text), -2);
      Ergebnis[45]:=RoundTo(StrToFloat(Edit43.Text)*h1*0.15, -2);
      Edit45.Text:=FloatToStr(Ergebnis[45]);
      if StrToFloat(Edit43.Text)>0 then
        begin
          Edit43.Color:=(clSkyBlue);
          Memo1.Lines.Add(Edit43.Text+' x '+Label18.Caption);
        end
      else Edit43.Color:=(clWindow);
end;
 
procedure TForm7.Edit46Exit(Sender: TObject);
begin
  Ergebnis[48]:=RoundTo(StrToFloat(Edit46.Text)/100*StrToFloat(Edit47.Text),-2);
  Edit48.Text:=FloatToStr(Ergebnis[48]);
  if StrToFloat(Edit46.Text)>0 then
    begin
      Edit46.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit46.Text+' x '+Label19.Caption);
    end
  else Edit46.Color:=(clWindow);
end;
 
procedure TForm7.Edit4Exit(Sender: TObject);
begin
  Ergebnis[6]:=RoundTo(StrToFloat(Edit4.Text)*StrtoFloat(Edit5.Text),-2);
  Edit6.Text:=FloatToStr(Ergebnis[6]);
  if StrToFloat(Edit4.Text)>0 then
    begin
      Edit4.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit4.Text+' x '+Label5.Caption);
    end
  else Edit4.Color:=(clWindow);
end;
 
procedure TForm7.Edit7Exit(Sender: TObject);
begin
  Ergebnis[9]:=RoundTo(StrToFloat(Edit7.Text)*StrtoFloat(Edit8.Text),-2);
  Edit9.Text:=FloatToStr(Ergebnis[9]);
  if StrToFloat(Edit7.Text)>0 then
    begin
      Edit7.Color:=(clSkyBlue);
      Memo1.Lines.Add(Edit7.Text+' x '+Label6.Caption);
    end
  else Edit7.Color:=(clWindow);
end;
 
procedure TForm7.FormCreate(Sender: TObject);
 
var
i : integer;
 
begin
  if main.version_intern=false then         //Felder bleiben gesperrt
    begin
      if store=false then
        begin
          for i:=1 to 49 do
            begin
            v[i]:=('0');
            end;
        end;
      Edit1.Text:=(v[1]); Edit3.Text:=(v[3]);
      if StrToFloat(Edit1.Text)>0 then Edit1.Color:=(clSkyBlue);
      Edit4.Text:=(v[4]); Edit6.Text:=(v[6]);
      if StrToFloat(Edit4.Text)>0 then Edit4.Color:=(clSkyBlue);
      Edit7.Text:=(v[7]); Edit9.Text:=(v[9]);
      if StrToFloat(Edit7.Text)>0 then Edit7.Color:=(clSkyBlue);
      Edit10.Text:=(v[10]); Edit12.Text:=(v[12]);
      if StrToFloat(Edit10.Text)>0 then Edit10.Color:=(clSkyBlue);
      Edit13.Text:=(v[13]); Edit15.Text:=(v[15]);
      if StrToFloat(Edit13.Text)>0 then Edit13.Color:=(clSkyBlue);
      Edit16.Text:=(v[16]); Edit18.Text:=(v[18]);
      if StrToFloat(Edit16.Text)>0 then Edit16.Color:=(clSkyBlue);
      Edit19.Text:=(v[19]); Edit21.Text:=(v[21]);
      if StrToFloat(Edit19.Text)>0 then Edit19.Color:=(clSkyBlue);
      Edit22.Text:=(v[22]); Edit24.Text:=(v[24]);
      if StrToFloat(Edit22.Text)>0 then Edit22.Color:=(clSkyBlue);
      Edit25.Text:=(v[25]); Edit27.Text:=(v[27]);
      if StrToFloat(Edit25.Text)>0 then Edit25.Color:=(clSkyBlue);
      Edit28.Text:=(v[28]); Edit30.Text:=(v[30]);
      if StrToFloat(Edit28.Text)>0 then Edit28.Color:=(clSkyBlue);
      Edit31.Text:=(v[31]); Edit33.Text:=(v[33]);
      if StrToFloat(Edit31.Text)>0 then Edit31.Color:=(clSkyBlue);
      Edit34.Text:=(v[34]); Edit36.Text:=(v[36]);
      if StrToFloat(Edit34.Text)>0 then Edit34.Color:=(clSkyBlue);
      Edit37.Text:=(v[37]); Edit39.Text:=(v[39]);
      if StrToFloat(Edit37.Text)>0 then Edit37.Color:=(clSkyBlue);
      Edit40.Text:=(v[40]); Edit42.Text:=(v[42]);
      if StrToFloat(Edit40.Text)>0 then Edit40.Color:=(clSkyBlue);
      Edit43.Text:=(v[43]); Edit45.Text:=(v[45]);
      if StrToFloat(Edit43.Text)>0 then Edit43.Color:=(clSkyBlue);
      Edit46.Text:=(v[46]); Edit48.Text:=(v[48]);
      if StrToFloat(Edit46.Text)>0 then Edit46.Color:=(clSkyBlue);
      Edit49.Text:=(v[49]);
      end
  else if main.version_intern=true then         //Felder freigeben
    begin
      if store=false then
        begin
          for i:=1 to 49 do
          begin
          v[i]:=('0');
          end;
        end;
      Edit1.Text:=(v[1]); Edit3.Text:=(v[3]);
      if StrToFloat(Edit1.Text)>0 then Edit1.Color:=(clSkyBlue);
      Edit4.Text:=(v[4]); Edit6.Text:=(v[6]);
      if StrToFloat(Edit4.Text)>0 then Edit4.Color:=(clSkyBlue);
      Edit7.Text:=(v[7]); Edit9.Text:=(v[9]);
      if StrToFloat(Edit7.Text)>0 then Edit7.Color:=(clSkyBlue);
      Edit10.Text:=(v[10]); Edit12.Text:=(v[12]);
      if StrToFloat(Edit10.Text)>0 then Edit10.Color:=(clSkyBlue);
      Edit13.Text:=(v[13]); Edit15.Text:=(v[15]);
      if StrToFloat(Edit13.Text)>0 then Edit13.Color:=(clSkyBlue);
      Edit16.Text:=(v[16]); Edit18.Text:=(v[18]);
      if StrToFloat(Edit16.Text)>0 then Edit16.Color:=(clSkyBlue);
      Edit19.Text:=(v[19]); Edit21.Text:=(v[21]);
      if StrToFloat(Edit19.Text)>0 then Edit19.Color:=(clSkyBlue);
      Edit22.Text:=(v[22]); Edit24.Text:=(v[24]);
      if StrToFloat(Edit22.Text)>0 then Edit22.Color:=(clSkyBlue);
      Edit25.Text:=(v[25]); Edit27.Text:=(v[27]);
      if StrToFloat(Edit25.Text)>0 then Edit25.Color:=(clSkyBlue);
      Edit28.Text:=(v[28]); Edit30.Text:=(v[30]);
      if StrToFloat(Edit28.Text)>0 then Edit28.Color:=(clSkyBlue);
      Edit31.Text:=(v[31]); Edit33.Text:=(v[33]);
      if StrToFloat(Edit31.Text)>0 then Edit31.Color:=(clSkyBlue);
      Edit34.Text:=(v[34]); Edit36.Text:=(v[36]);
      if StrToFloat(Edit34.Text)>0 then Edit34.Color:=(clSkyBlue);
      Edit37.Text:=(v[37]); Edit39.Text:=(v[39]);
      if StrToFloat(Edit37.Text)>0 then Edit37.Color:=(clSkyBlue);
      Edit40.Text:=(v[40]); Edit42.Text:=(v[42]);
      if StrToFloat(Edit40.Text)>0 then Edit40.Color:=(clSkyBlue);
      Edit43.Text:=(v[43]); Edit45.Text:=(v[45]);
      if StrToFloat(Edit43.Text)>0 then Edit43.Color:=(clSkyBlue);
      Edit46.Text:=(v[46]); Edit48.Text:=(v[48]);
      if StrToFloat(Edit46.Text)>0 then Edit46.Color:=(clSkyBlue);
 
      Edit5.Color:=(clWindow); Edit5.ReadOnly:=false;
      Edit2.Color:=(clWindow); Edit2.ReadOnly:=false;
      Edit8.Color:=(clWindow); Edit8.ReadOnly:=false;
      Edit11.Color:=(clWindow); Edit11.ReadOnly:=false;
      Edit14.Color:=(clWindow); Edit14.ReadOnly:=false;
      Edit17.Color:=(clWindow); Edit17.ReadOnly:=false;
      Edit20.Color:=(clWindow); Edit20.ReadOnly:=false;
      Edit23.Color:=(clWindow); Edit23.ReadOnly:=false;
      Edit26.Color:=(clWindow); Edit26.ReadOnly:=false;
      Edit29.Color:=(clWindow); Edit29.ReadOnly:=false;
      Edit32.Color:=(clWindow); Edit32.ReadOnly:=false;
      Edit35.Color:=(clWindow); Edit35.ReadOnly:=false;
      Edit38.Color:=(clWindow); Edit38.ReadOnly:=false;
      Edit41.Color:=(clWindow); Edit41.ReadOnly:=false;
      Edit47.Color:=(clWindow); Edit47.ReadOnly:=false;
 
      if store=true then
        begin
        Edit2.Text:=(v[2]);
        Edit5.Text:=(v[5]);
        Edit8.Text:=(v[8]);
        Edit11.Text:=(v[11]);
        Edit14.Text:=(v[14]);
        Edit17.Text:=(v[17]);
        Edit20.Text:=(v[20]);
        Edit23.Text:=(v[23]);
        Edit26.Text:=(v[26]);
        Edit29.Text:=(v[29]);
        Edit32.Text:=(v[32]);
        Edit35.Text:=(v[35]);
        Edit38.Text:=(v[38]);
        Edit41.Text:=(v[41]);
        Edit47.Text:=(v[47]);
        end;
    end;
end;
 
initialization
  {$I unit7.lrs}
 
end. 
 
Ich hoffe, dass es nicht zu unübersichtlich ist.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Access Violation

Beitrag von Michl »

Warum so?!

Code: Alles auswählen

procedure TForm1.MenuItem13Click(Sender: TObject);
 
var
f : TForm7;
 
begin
   f := TForm7.Create(nil);                      // Neues Formular aufmachen
   try
     f.ShowModal();
   finally
     FreeAndNil(f);
   end;
end; 
probier mal

Code: Alles auswählen

procedure TForm1.MenuItem13Click(Sender: TObject);
begin
   Form7.ShowModal;
end; 

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Access Violation

Beitrag von Giss »

Michl hat geschrieben:Warum das?!
Die benutzte Methode war in den Büchern, die ich gelesen habe, die bevorzugte. Deinen Vorschlag habe ich gerade umgesetzt gehabt. Leider hat das nicht so ohne weiteres funktioniert:

Code: Alles auswählen

main.pas(1727,19) Error: Identifier not found "ShowModal"
Und es funktioniert ja.

Antworten