Thema: Delphi Error EAccessViolation

Einzelnen Beitrag anzeigen

Z32
(Gast)

n/a Beiträge
 
#1

Error EAccessViolation

  Alt 6. Feb 2007, 17:16
Hallo,

Ich habe ein Problem, umd zwar weiß ich nicht warum ich am ende meimer Procedure immer den Error "EAccessViolation" bekomme.

Erstmal zu der Procedure, die stammt aus meinem Kontoverwaltungsprogramm und ist zum speichern eingegebener Daten in eine Ini Datei gedacht. Jedoch soll befor der Name eines Kontos geändert wird erst überprüft werden ob schon ein konto mit dem selben Namen vorhanden ist. Und an der Stelle haperts

Delphi-Quellcode:
{FORM1.BUTTON1.CLICK - DATEN SPEICHERN}
procedure TForm1.Button1Click(Sender: TObject);
var x: string;
begin
if not (combobox1.Text='Bitte wählen') then {abfragen ob in der Benutzer überhaupt ein konto gewählt hat}
  begin
  if not (combobox1.Text='Bargeld') then {abfragen ob nicht das bargeldkonto gewählt ist}
    begin
    x:='k';
    ini01:=TIniFile.create(ExtractFilePath(ParamStr(0))+'kvload.ini');
      try
      if combobox1.Text=edit1.Text then {abfragen ob überhaupt ein neuer name eingegeben wurde}
        begin
        ini01.EraseSection(combobox1.Text);
        ini01.WriteString(edit1.Text,'Inhaber',edit2.Text);
        ini01.WriteString(edit1.Text,'Bank',edit3.Text);
        ini01.WriteString(edit1.Text,'Bankleitzahl',edit4.Text);
        ini01.WriteString(edit1.Text,'Kontonummer',edit5.Text);
        ini01.WriteString(edit1.Text,'Kommentar',edit6.Text);
        ini01.WriteInteger(edit1.Text,'Kapital',strtoint(label19.Caption));
        end
        else {es wurde ein neuer name eingegeben}
        begin
        if ini01.SectionExists(edit1.Text) then {abfragen ob der neue name schon vorhanden ist}
          begin
          edit1.Text:=combobox1.Text;
          showmessage('Daten speichern fehlgeschlagen! Den eingegebenen Kontonamen gibt es schon');
          end
          else {er ist noch nicht vorhanden, also speichern}
          begin
          ini01.EraseSection(combobox1.Text);
          ini01.WriteString(edit1.Text,'Inhaber',edit2.Text);
          ini01.WriteString(edit1.Text,'Bank',edit3.Text);
          ini01.WriteString(edit1.Text,'Bankleitzahl',edit4.Text);
          ini01.WriteString(edit1.Text,'Kontonummer',edit5.Text);
          ini01.WriteString(edit1.Text,'Kommentar',edit6.Text);
          ini01.WriteInteger(edit1.Text,'Kapital',strtoint(label19.Caption));
          end;
        end;
      finally
      ini01.Free;
      end;
    end
    else {besonderheit beim bargeld konto, man kann den namen nicht ändern...}
    begin {...deshalb unwichtig}
    x:='b';
    ini01:=TIniFile.create(ExtractFilePath(ParamStr(0))+'kvload.ini');
      try
      ini01.EraseSection(combobox1.Text);
      ini01.WriteString(combobox1.Text,'Kommentar',edit6.Text);
      ini01.WriteInteger(combobox1.Text,'Kapital',strtoint(label19.Caption));
      finally
      ini01.Free;
      end;
    end;
  ini01:=TIniFile.create(ExtractFilePath(ParamStr(0))+'kvload.ini'); {der combobox werden alle konten zugeordnet}
    try
    ini01.ReadSections(combobox1.Items);
    finally
    ini01.Free;
    end;
  if x='kthen {combobox.text wird mit dem aktuellem kontonamen (neu, oder nicht) geladen}
  combobox1.Text:=edit1.Text;
  if x='bthen
  combobox1.Text:='Bargeld';
  showmessage('Daten erfolgreich gespeichert');
  end
  else
  begin
  showmessage('Daten speichern fehlgeschlagen');
  end;
end;
Bisher klappt das ändern der Detials und das ändern des kontonamen, wenn der neue nicht schon vorhanden ist. Aber wenn der neue name schon vorhanden ist, kommt eben dieser fehler (s.o)

Ich hoffe, dass ihr durch den Quelltext blickt und auf eure hilfe
  Mit Zitat antworten Zitat