IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

création de procédure avec delphi


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 16
    Points
    16
    Par défaut création de procédure avec delphi
    bjr, j'ai ecrit cette procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    procedure TForm9.calcul(tps1:tdatetime;s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24:integer);
    var pat1,pat2,pat3,pat4,pat5,pat6,pat7,pat8,pat9,pat10,pat11,pat12,pat13,pat14,pat15,pat16,pat17,pat18,pat19,pat20,pat21,pat22,pat23,pat24:integer;
    begin
    pat1:=s1;
    pat2:=s2;
    pat3:=s3;
    pat4:=s4;
    pat5:=s5;
    pat6:=s6;
    pat7:=s7;
    pat8:=s8;
    pat9:=s9;
    pat10:=s10;
    pat11:=s11;
    pat12:=s12;
    pat13:=s13;
    pat14:=s14;
    pat15:=s15;
    pat16:=s16;
    pat17:=s17;
    pat18:=s18;
    pat19:=s19;
    pat20:=s20;
    pat21:=s21;
    pat22:=s22;
    pat23:=s23;
    pat24:=s24;
     
          if (tps1>=strtotime('06:00:00'))and (tps1<=strtotime('07:00:00')) then
          s1:=s1+1;
          if (tps1>=strtotime('07:00:00'))and (tps1<=strtotime('08:00:00')) then
          s2:=s2+1;
          if (tps1>=strtotime('08:00:00'))and (tps1<=strtotime('09:00:00')) then
          s3:=s3+1;
          if (tps1>=strtotime('09:00:00'))and (tps1<=strtotime('10:00:00')) then
          s4:=s4+1;
          if (tps1>=strtotime('10:00:00'))and (tps1<=strtotime('11:00:00')) then
          s5:=s5+1;
          if (tps1>=strtotime('11:00:00'))and (tps1<=strtotime('12:00:00')) then
          s6:=s6+1;
          if (tps1>=strtotime('12:00:00'))and (tps1<=strtotime('13:00:00')) then
          s7:=s7+1;
          if (tps1>=strtotime('13:00:00'))and (tps1<=strtotime('14:00:00')) then
          s8:=s8+1;
          if (tps1>=strtotime('14:00:00'))and (tps1<=strtotime('15:00:00')) then
          s9:=s9+1;
          if (tps1>=strtotime('15:00:00'))and (tps1<=strtotime('16:00:00')) then
          s10:=s10+1;
          if (tps1>=strtotime('16:00:00'))and (tps1<=strtotime('17:00:00')) then
          s11:=s11+1;
          if (tps1>=strtotime('17:00:00'))and (tps1<=strtotime('18:00:00')) then
          s12:=s12+1;
          if (tps1>=strtotime('18:00:00'))and (tps1<=strtotime('19:00:00')) then
          s13:=s13+1;
          if (tps1>=strtotime('19:00:00'))and (tps1<=strtotime('20:00:00')) then
          s14:=s14+1;
          if (tps1>=strtotime('20:00:00'))and (tps1<=strtotime('21:00:00')) then
          s15:=s15+1;
          if (tps1>=strtotime('21:00:00'))and (tps1<=strtotime('22:00:00')) then
          s16:=s16+1;
          if (tps1>=strtotime('22:00:00'))and (tps1<=strtotime('23:00:00')) then
          s17:=s17+1;
          if (tps1>=strtotime('23:00:00'))and (tps1<=strtotime('00:00:00')) then
          s18:=s18+1;
          if (tps1>=strtotime('00:00:00'))and (tps1<=strtotime('01:00:00')) then
          s19:=s19+1;
          if (tps1>=strtotime('01:00:00'))and (tps1<=strtotime('02:00:00')) then
          s20:=s20+1;
          if (tps1>=strtotime('02:00:00'))and (tps1<=strtotime('03:00:00')) then
          s21:=s21+1;
          if (tps1>=strtotime('03:00:00'))and (tps1<=strtotime('04:00:00')) then
          s22:=s22+1;
          if (tps1>=strtotime('04:00:00'))and (tps1<=strtotime('05:00:00')) then
          s23:=s23+1;
          if (tps1>=strtotime('05:00:00'))and (tps1<=strtotime('06:00:00')) then
          s24:=s24+1;
    end;
    et quand je l'appelle à partir de mon programme:calcul(temps1,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24);
    sachant que j'initialise les a1,a2,....a24 à 0, j'obtiens tjrs des '0' comme résultats, je ne comprends pas pourquoi.

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut!

    je ne sais pas où est l'erreur mais je peux te donner quelques conseils et astuces pour améliorer ton code.

    • du moment que tu attends un résultat c'est une fonction dont tu as besoin et pas une procédure. cette façon te permettra d'utiliser le mot clé Result pour retourner ton résultat.
    • tu peux améliorer les tests if par un case of, ton code sera plus lisible
    • pour rechercher la cause à ton pourquoi je te suggère d'utiliser l'exécution pas à pas en mettant un point d'arrêt dans ta fonction ou le mieux lors de son appel.
    • tes tests sont soumis à une valeur donnée à tps1 ! es-tu sûr que tps1 reçoit bien une valeur ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Invité1
    Invité(e)
    Par défaut
    salut
    essaies avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure TForm9.calcul(tps1:tdatetime; var s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24:integer);
    les valeurs s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24 seront modifiées, il faut les Précéder de "var"

    bonne chance

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    bon soyons un peu pédagogue...

    tu passes 25 paramètres à ta fonction, ça fait un peu bcp non ?
    tu convertis des chaines en temps à chaque appel alors que finalement tu ne testes que l'heure...on doit pouvoir faire plus joli non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    uses
      DateUtils;
     
    type
      THeures=array[1..24] of Integer;
     
    procedure calcul(tps: TDateTime; var Heures: THeures);
    var
      h : Integer;
    begin
      h := HourOf(tps); // quelle heure est-il ?
      h := h - 5; // puisque s1 correspond à 6h dans ton exemple
      if h < 1 then
        Inc(h, 24); // on boucle au besoin
      Inc(Heures[h]); // trop facile :)
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      h: THeures;
      i: Integer;
      s: string;
    begin
      FillChar(h, SizeOf(h), 0); // tout à 0
      Calcul(Now, h);
      s := '';
      for i := 1 to 24 do
        s := s + IntToStr(i) + '=' + IntToStr(h[i]) + ' ';
      ShowMessage(s);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 114
    Points : 64
    Points
    64
    Par défaut
    OMG, la fonction de malade

  6. #6
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Tiens, je connaissais pas le HourOf

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Création de procedure avec delphi
    bjr, et merci bcp vous m'avez sauvé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/05/2010, 11h02
  2. Création de carte avec Delphi
    Par accoustic dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 08/02/2007, 13h01
  3. Connection ou création d'une base interbase avec Delphi
    Par vincentj dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2005, 10h59
  4. Réponses: 3
    Dernier message: 09/11/2004, 14h43
  5. PRocédure stocké, comment appeler avec delphi?
    Par SkyDev dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/04/2004, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo