AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

nach liste.free -> EConvertError

Ein Thema von m.k · begonnen am 11. Nov 2003 · letzter Beitrag vom 11. Nov 2003
Antwort Antwort
m.k

Registriert seit: 11. Nov 2003
2 Beiträge
 
#1

nach liste.free -> EConvertError

  Alt 11. Nov 2003, 15:53
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;
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: nach liste.free -> EConvertError

  Alt 11. Nov 2003, 16:16
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!
  Mit Zitat antworten Zitat
m.k

Registriert seit: 11. Nov 2003
2 Beiträge
 
#3

Re: nach liste.free -> EConvertError

  Alt 11. Nov 2003, 16:46
wenn ich das ganze programm ohne zeilen.free laufen lasse, dann geht es komischer weise.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: nach liste.free -> EConvertError

  Alt 11. Nov 2003, 17:54
Hi,
Zitat von Spider:
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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