Dans ce cas j'ai du code qui fonctionne sans problème dans un programme existant, mais lance une excecption quand je l'utilise dans un nouveau programme.Quel est le problème avec ce code?
Il ne peut pas être le meilleur code, mais il travaille dans une utilisation quotidienne ...
Function DoSQlCommandWithResultSet(const command : String;
AdoConnection : TADOConnection;
resultSet : TStringList): Boolean;
var i : Integer;
AdoQuery : TADOQuery;
begin
Result := True;
resultSet.Clear();
AdoQuery := TADOQuery.Create(nil);
try
AdoQuery.Connection := AdoConnection;
AdoQuery.SQL.Add(command);
AdoQuery.Open();
i := 0;
while not AdoQuery.eof do
begin
resultSet.Add(ADOQuery.Fields[i].Value);
AdoQuery.Next;
Inc(i);
end;
finally
AdoQuery.Free();
end;
end;
Oui, il a probablement besoin est pas utilisé un try/catch et le résultat booléen, mais fonctionne ...
.... dans le programme précédent, mais dans un nouveau il thows une exception lorsqu'il est appelé ...
procedure TForm1.FormCreate(Sender: TObject);
var my_stringlist : TStringList;
i : integer;
begin
AdoConnection := TADOConnection.Create(nil);
if ConnectToDefaultDatabase(AdoConnection) = False then
MessageDlg('Agh !', mtError, [mbOK], 0);
my_stringlist := TStringList.Create();
if DoSQlCommandWithResultSet('show databases', AdoConnection, my_stringlist) = False then
MessageDlg('Urk !', mtError, [mbOK], 0);
for i := 0 to Pred(my_stringlist.Count) do
memo1.Lines.Add(my_stringlist.Strings[i]);
end; // FormCreate()
maintenant, voici la partie intéressante ... il jette la exception sur Inc(i)
et, si je remplace cette boucle while avec une boucle for ...
for i := 0 to Pred(ADOQuery.Fields.count) do
resultSet.Add(ADOQuery.Fields[i].Value);
cela fonctionne très bien.
Je suppose que je pourrais juste utiliser la boucle pour & passer, mais je voudrais comprendre ce qui ne va pas .... quelqu'un peut-il m'expliquer? Merci
hmm, aucun commentaire, aucune réponse et un vote négatif. Je me demande pourquoi il a déprécié. Et me donne envie de suggérer que downvoting ne soit pas autorisé sans une explication. C'est seulement de bons mannequins, et on pourrait s'appuyer sur de telles explications – Mawg
vous avez déjà 2 réponses ... – Yahia
pas au moment où il a été downvoted sans commentaire, je ne l'avais pas. J'adore ce site, mais parfois les downvoters hit & run ... – Mawg