Discussion: Anniversaires

  1. #21
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    6 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 6 757
    Points : 21 594
    Points
    21 594

    Par défaut

    Citation Envoyé par Roland Chastain Voir le message
    D'accord, mais où faut-il la prendre exactement, la date ?

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    BEGIN:VEVENT
    CLASS:PUBLIC
    CREATED:20160519T124312Z
    DTEND;TZID="Romance Standard Time":20160519T100000
    DTSTAMP:20160519T124300Z
    DTSTART;TZID="Romance Standard Time":20160519T090000
    LAST-MODIFIED:20160519T124312Z
    SEQUENCE:0
    SUMMARY: roland juju
    TRANSP:OPAQUE
    UID:dc63d245-71d3-437a-bff2-33eb081f2a4d
    X-MICROSOFT-CDO-BUSYSTATUS:BUSY
    END:VEVENT
    c'est du format iCal

    CREATED donne la date de création de l'événement qui a "LAST_MODIFIED"
    DSTART/DEND c'est le début/fin, ici le 19/05/2016 et 09h00 à 10h00
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal

  2. #22
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 2 982
    Points : 10 699
    Points
    10 699
    Billets dans le blog
    4

    Par défaut

    Merci Paul.

    Voici un premier essai de lecture du fichier .ics.

    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
     
    { Free Pascal }
     
    program ReadICS_01;
     
    {$APPTYPE CONSOLE}
    {$IFDEF FPC}{$MODE DELPHI}{$ENDIF}
     
    uses
      SysUtils, Classes, RegExpr;
     
    const
      PATTERN =
        'DTSTART;TZID="[ \w]+":(\d{8})\w+\s+' +
        'LAST-MODIFIED:\w+\s+' +
        'SEQUENCE:\w+\s+' +
        'SUMMARY:([ \w]+)';
     
    var
      list: TStringList;
      expr: TRegExpr;
     
    begin
      list := TStringList.Create;
      list.LoadFromFile('cal.ics');
     
      expr := TRegExpr.Create;
      expr.Expression := PATTERN;
     
      if expr.Exec(list.Text) then
        repeat
          //WriteLn(expr.Match[0]);
          WriteLn(expr.Match[1]);
          WriteLn(expr.Match[2]);
        until not expr.ExecNext;
     
      expr.Free;
     
      list.Free;
    end.
    À tester sur le vrai fichier.

    Voici ce que ça donne avec le fichier de test :

    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    20160519
     roland juju
    20160601
    Laurent Bebe
    20160528
    Bernard Tutu
    20160603
    Gerard Lili

    Si ce premier essai fonctionne, on peut améliorer le programme afin qu'il fabrique l'unité en Pascal, ce qui éviterait d'avoir à remplir l'unité à la main.

  3. #23
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 2 982
    Points : 10 699
    Points
    10 699
    Billets dans le blog
    4

    Par défaut

    Voici le programme qui fabrique l'unité en Pascal.

    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
    78
    79
     
    { Free Pascal }
     
    program ReadICS_02;
     
    {$APPTYPE CONSOLE}
    {$IFDEF FPC}{$MODE DELPHI}{$ENDIF}
     
    uses
      SysUtils, Classes, RegExpr;
     
    const
      PATTERN =
        'DTSTART;TZID="[ \w]+":\d{4}(\d{2})(\d{2})\w+\s+' +
        'LAST-MODIFIED:\w+\s+' +
        'SEQUENCE:\w+\s+' +
        'SUMMARY:([ \w]+)';
     
    var
      list: TStringList;
      expr: TRegExpr;
      month, day: integer;
      data: array[1..12, 1..31] of string;
      fichier: TextFile;
     
    begin
      list := TStringList.Create;
      list.LoadFromFile('cal.ics');
     
      expr := TRegExpr.Create;
      expr.Expression := PATTERN;
     
      if expr.Exec(list.Text) then
        repeat
          month := StrToInt(expr.Match[1]);
          day := StrToInt(expr.Match[2]);
          data[month, day] := expr.Match[3];
        until not expr.ExecNext;
     
      expr.Free;
     
      list.Free;
     
      AssignFile(fichier, 'Unit1.pas');
      Rewrite(fichier);
     
      WriteLn(fichier);
      WriteLn(fichier, 'unit Unit1;');
      WriteLn(fichier);
      WriteLn(fichier, 'interface');
      WriteLn(fichier);
      WriteLn(fichier, 'const');
      WriteLn(fichier, '  DATA: array[1..12, 1..31] of string = (');
     
      for month := 1 to 12 do
      begin
        WriteLn(fichier, '    (');
        for day := 1 to 31 do
        begin
          Write(fichier, Format('      {%0.2d/%0.2d} "%s"', [day, month, data[month, day]]));
          if day < 31 then
            Write(fichier, ',');
          WriteLn(fichier);
        end;
        Write(fichier, '    )');
        if month < 12 then
          WriteLn(fichier, ',')
        else
          WriteLn(fichier);
      end;
     
      WriteLn(fichier, '  );');
      WriteLn(fichier);
      WriteLn(fichier, 'implementation');
      WriteLn(fichier);
      WriteLn(fichier, 'end.');
     
      CloseFile(fichier);
    end.

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Votre code pour lire le fichier .ics doit etre monter avec delphi en fichier .DPROJ pour servir d'extracteur ???

    J'ai essayer de pencher sur delphi7 qui a l'air plus complexe que flashpascal.

  5. #25
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 2 982
    Points : 10 699
    Points
    10 699
    Billets dans le blog
    4

    Par défaut

    Le code que j'ai posté plus haut doit être compilé avec Free Pascal. Vous pouvez aussi le compiler avec Delphi 7, mais alors il faut vous procurer l'unité RegExpr.

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    ok je peux avoir 2 ou 3 astuces pour compiler sous free pascal ou peut être lien pour comprendre le fonctionnement de celui ci.

  7. #27
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 2 982
    Points : 10 699
    Points
    10 699
    Billets dans le blog
    4

    Par défaut

    Ce que je peux vous proposer, c'est un programme déjà compilé. Il faut l'exécuter au moyen de la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadICS_03.exe "votre fichier.ics"
    Ou faire glisser le fichier .ics, avec la souris, sur le fichier .exe.
    Fichiers attachés Fichiers attachés

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 6
    Points
    6

    Par défaut

    Merci Roland et en terme de format d écriture si je veux faire un retour à la ligne dans votre fichier .pas qu'elle est l écriture a adopter ???

  9. #29
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    décembre 2011
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : décembre 2011
    Messages : 2 982
    Points : 10 699
    Points
    10 699
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par nono42000 Voir le message
    si je veux faire un retour à la ligne
    Je ne suis pas sûr de bien comprendre la question. Je suppose que vous parlez du programme Flash Pascal. Pour avoir un retour à la ligne il faut utiliser le caractère #10 ou le caractère #13.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      t.text := 'Anniversaire' + #10 + DATA[month, day];

Discussions similaires

  1. Requête date d'anniversaire dans un intervalle
    Par Korg_Meridian dans le forum Requêtes
    Réponses: 6
    Dernier message: 28/03/2017, 14h20
  2. [XL-2007] Comparaison avec date d'anniversaire
    Par bird007 dans le forum Excel
    Réponses: 11
    Dernier message: 25/06/2010, 14h19
  3. date d'anniversaire par formulaire
    Par keurdeloup45 dans le forum PHP & MySQL
    Réponses: 18
    Dernier message: 25/05/2009, 21h22
  4. [Humour] Date d'anniversaire en phrases
    Par LP-mpascolo dans le forum La taverne du Club : Humour et divers
    Réponses: 130
    Dernier message: 07/08/2007, 12h24
  5. [VB]Date d'anniversaire
    Par misterbenj dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 16/02/2006, 18h11

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