Pb sur delphi a la compilation need help !!!

Résolu
shark1664 Messages postés 25 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 24 juillet 2008 - 16 avril 2007 à 14:42
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 17 avril 2007 à 11:59
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

shark1664 Messages postés 25 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 24 juillet 2008
17 avril 2007 à 09:39
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
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
16 avril 2007 à 15:12
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.
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
17 avril 2007 à 11:59
.... 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.
0
Rejoignez-nous