Pb sur delphi a la compilation need help !!!

Résolu
Signaler
Messages postés
25
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 juillet 2008
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
voila mon code c'est une requete qui récupère dans une table une ligne
compète quand le code est pareil que ce que l'utilisateur a siasie et
au niveau du  """    begin

                
                   
    Result := true;

                                    
   
Result.MapFromBDD( Result.FQry);
         
                   
           end


sa bug sa me di type incompatible entre TEnteteDoc et boolean je comprend pas l'erreurs help !!!!!!

tEnteteDoc est en fait un type de de ma table c'est un tableau un longue ligne quoi voila

merci de répondre

voici un bout de code


Result :=TEnteteDoc.Create;

  Result.Connection := aConnection;

  Result.New := False;


  with Result.FQry do

  begin

    try

      SQLConnection := aConnection;

      SQL.Clear;

      SQL.Add( format('SELECT * FROM %s%sPFSWE '

                   
+ 'WHERE ( SWECDCLI = : aNumClient) ',

                   
[ wLibPFSWE, ApplicationLS.SQLSeparateur]));

      ParamByName( 'SWECDCLI').AsInteger := aNumClient;

      Open;


      if not( Eof) then

      begin

       Result := true;

       Result.MapFromBDD( Result.FQry);

      end

      else

      begin

       Result := false;

       FreeAndNil( Result)

      end;

    finally

      Close;

      Free;

    end;

  end;

sh@rk

3 réponses

Messages postés
25
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 juillet 2008

non je l'appel comme sa c'est juste histoire de normalisé le code la ou je bosse

mais en faite la solution c'est que je croyais vouloir recevoir un
boolean mais ce n'est pas utile en faite car ce n'est pas du même type
comme le message le disait commentaire result := true a supprimer donc

sh@rk
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

Result :=TEnteteDoc.Create;

"Result" c'est la valeur de retour de ta function ! (un coup d'oeil sur les bases de pascal peut-être?)

Appel ta variable de BD différement ! genre edResult, ou dbResult, ou mieux dbQuery, bref. pas result.

c'est tout.

bon code.

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
.... ouai. ok...

n'empêche que appeler une var "result" c'est une très mauvaisse idée. aResult / TheResult c'est mieux.
et si la norme de prog de ton entreprise indique ceci, parle avec le rédacteur et rappel lui les problèmes que tu peux rencontrer lorsque tu utilise des mots réservé comme nom de var.

<hr size= "2" width="100%" />
et j'avais pas vu avant, mais

with Result.FQry do begin
    [....]
     FreeAndNil( Result); //free  Result (et probablement FQry aussi)

 finally
      Close; // appel Result.FQry.Close, mais il est peut-être freed !
      Free; //free Result.FQry
end;//with

ça m'étonnerais pas que t'ai des AV (ou suivant comment est programmé TEnteteDoc, des perte de mémoire allieur dans le code). De manière général, ne libère la mémoire de la var du with QUE dans le dernier finally.

with TTonType.create do
Champs1 : = ValeurInitial;
Action2;
Action3;
...
finally
  free;
end;
//note l'absence de var local déclarée. on utilise que le with.

dans certain cas, la var local est nécessaire, utilise donc:
var :=  TTonType.create
with var do

[reste identique]

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.