Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi nach liste.free -> EConvertError (https://www.delphipraxis.net/11670-nach-liste-free-econverterror.html)

m.k 11. Nov 2003 15:53


nach liste.free -> EConvertError
 
ich habe eine textdatei, wo ich SQL-Befehle drin stehen hab.
diese lese ich in eine stringlist ein und sende jeden eintrag in eine DB.
das klappt auch alles soweit.

aber ich wenn ich zu guter letzt die liste leeren will, dann tritt eine EConvertError Expetion auf.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
zeilen : tstrings;
sql_query : string;

begin
   richedit1.Lines.Add('Start des Verarbeitungsvorgangs!');
   zeilen := tstringlist.Create;
   trans.Active := true;

   try zeilen.LoadFromFile(edit1.Text);
       for i :=0 to zeilen.Count-1 do
               begin
                sql_query := zeilen[i];
                sql.SQL.Clear;
                sql.SQL.Add(sql_query);
                sql.ExecQuery;
                end;
   finally
      begin
         zeilen.Free;
         richedit1.Lines.Add('Daten OK');
         trans.Commit;
         sql.Close;
      end;

      richedit1.Lines.Add('================================================================');
      richedit1.Lines.Add(IntToStr(zeilen.count)+' Datensätze in Datenbank geschrieben!');
      richedit1.Lines.Add('================================================================');
   end;

end;

Die Muhkuh 11. Nov 2003 16:16

Re: nach liste.free -> EConvertError
 
aber ich wenn ich zu guter letzt die liste leeren will, dann tritt eine EConvertError Expetion auf.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
zeilen : tstrings;
sql_query : string;

begin
   richedit1.Lines.Add('Start des Verarbeitungsvorgangs!');
   zeilen := tstringlist.Create;
   trans.Active := true;

   try zeilen.LoadFromFile(edit1.Text);
       for i :=0 to zeilen.Count-1 do
               begin
                sql_query := zeilen[i];
                sql.SQL.Clear; //Hm ist hier der Fehler?
                sql.SQL.Add(sql_query);
                sql.ExecQuery;
                end;
   finally
      begin
         zeilen.Free;
         richedit1.Lines.Add('Daten OK');
         trans.Commit;
         sql.Close; //Wenn hier der Fehler hier ist dann mach davor noch sql.Free
      end;

      richedit1.Lines.Add('================================================================');
      richedit1.Lines.Add(IntToStr(zeilen.count)+' Datensätze in Datenbank geschrieben!');
      richedit1.Lines.Add('================================================================');
   end;

end;
[/quote]

So oben hab ich die (vielleicht) Lösung hingeschrieben!

m.k 11. Nov 2003 16:46

Re: nach liste.free -> EConvertError
 
wenn ich das ganze programm ohne zeilen.free laufen lasse, dann geht es komischer weise.

CalganX 11. Nov 2003 17:54

Re: nach liste.free -> EConvertError
 
Hi,
Zitat:

Zitat von Spider
Delphi-Quellcode:
sql.Close; //Wenn hier der Fehler hier ist dann mach davor noch sql.Free

das wird auf keinen Fall gehen, weil du dann das Objekt freigibst und dann nochmal drauf zugreifst. So alsob du den Apfel zerstörst, bevor du ihn isst.

Nimm zuerst mal das "begin" und das "end" nach dem Finally weg. Das ist sinnlos.
Das Problem ist vermutlich das "zeilen.free", denn später greifst du nochmal draufzu. Versuch mal folgendes nach dem finally:
Delphi-Quellcode:
   finally
      richedit1.Lines.Add('Daten OK');
      trans.Commit;
      sql.Close;

      richedit1.Lines.Add('================================================================');
      richedit1.Lines.Add(IntToStr(zeilen.count)+' Datensätze in Datenbank geschrieben!');
      richedit1.Lines.Add('================================================================');

      zeilen.Free;
   end;
Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz