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

EDI Delphi Discussion :

{$i (Répertoire Destination)/Fichier.pas definie dans l'EDI Répertoire/Conditions->Destination


Sujet :

EDI Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut {$i (Répertoire Destination)/Fichier.pas definie dans l'EDI Répertoire/Conditions->Destination
    bonjour je cherche à inserer un fichier .pas ({$i fichier.pas} mais definie dans l'EDI Répertoire/Conditions->Destination
    il est definit dans le fichier .cfg mais comment le mettre dans {$i (Répertoire Destination)/Fichier.pas
    Merci.

  2. #2
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 757
    Billets dans le blog
    2
    Par défaut
    Je dirais quelque chose de cette façon :

    {$I MonFichier.pas}
    {$I ..\Common\MonFichier.pas}
    {$I C:\Sources\Includes\MonFichier.pas}
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    pas vraiment ce que je cherche
    donc un petit exemple
    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
     
    PROGRAM edi;
     
    {$AppType CONSOLE}
    uses
      windows,
      Classes,
      SysUtils;
     
    {$i Gateaux.pas}
     
    var selectfile:TStringlist;
        Cpi:Integer;
        T1:String;
    begin
        selectfile:=TStringlist.Create;
        T1:=' ';
        for cpi:=0 to high(gateaux) do
        begin
              selectfile.add(T1+''''+gateaux[Cpi]+'''');
              T1:=',';
        end;
        selectfile.sort;
        selectfile.Insert(0,'const gateaux:array[0 .. 30] of string=(');
        selectfile.add(');');
        selectfile.SaveToFile('Gateaux.pas');
        selectfile.free;
        writeln('Appuyez sur une touche');
        readln;
    end.
    le fichier gateaux.pas:
    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
    const gateaux:array[0 .. 30] of string=(
       'Le Paris-Brest'
      ,'La Brioche'
      ,'Les Chouquettes'
      ,'Le Chou'
      ,'L’Éclair'
      ,'La Charlotte aux fraises'
      ,'Le Mille-feuille'
      ,'Les Madeleines'
      ,'Le Financier'
      ,'Le Pain Perdu'
      ,'La Tarte au citron meringuée'
      ,'La Religieuse'
      ,'Le Fondant au chocolat'
      ,'Le Macaron'
      ,'Les Cannelés'
      ,'L’Opéra'
      ,'Le Fraisier'
      ,'Le Saint Honoré'
      ,'La Tarte tatin'
      ,'Le Baba au rhum'
      ,'Les Profiteroles'
      ,'Le Kouign-Amann'
      ,'Le quatre-quarts'
      ,'Les Beignets'
      ,'La Tropézienne'
      ,'Galette des Rois'
      ,'Clafoutis'
      ,'Gâteau Basque'
      ,'Napoléon'
      ,'Flan Pâtissier'
      ,'Merveilleux'
    );
    cela fonctionne bien quand j'execute dans le répertoire courant

    maintenant quand je definit dans l'EDI le répertoire de déstination :
    Nom : edi.jpg
Affichages : 215
Taille : 49,6 Ko
    le fichier 'Gateaux.pas' est bien present dans le répetoire C:\Tmp mais le fichier {$i Gateaux.pas} n'a pas été modifié;
    je sais je pourais faire {$i C:\Tmp\Gateaux.pas}
    mais ce que je cherche est de connaitre soit le répertoire de destination de l'EDI ou bien le répertoire ou ce trouve la source du progamme (si je me suis bien fait comprendre).
    ps:je sais que je pourai faire un Tstring.load(<fichier>') mais là n'est pas ma question. c'est de savoir comment recuperer le nom du répertoire de destination et pas avec un praramstr(0) mais bien de l'éditreur.
    derniere chose je sais qu'un fois compilé le {$i gateaux.pas} sera inclut dans le .exe (et donc pas pris en compte) c'est juste pour me permettre de rajouter des lignes dans ma source. (les gateaux sont seulements des exemples) (et de faire un tri)

  4. #4
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 757
    Billets dans le blog
    2
    Par défaut
    Pourquoi ne pas utiliser un fichier de ressources si ce n’est qu’une simple liste de données ?

    Tu crées un fichier .rc, tu l’inclus dans ton exécutable, et tu charges ensuite ces données dans un tableau dynamique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GATEAUXTXT RCDATA "gateaux.txt"
    gateaux.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Le Paris-Brest
    La Brioche
    Les Chouquettes
    Le Chou
    L’Éclair
    La Charlotte aux fraises
    Le Mille-feuille
    Les Madeleines
    Le Financier
    Le Pain Perdu
    ...
    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
     
    var
      Gateaux: array of string;
     
    procedure ChargerGateauxDepuisRessource;
    var
      ResStream: TResourceStream;
      SL: TStringList;
      I: Integer;
    begin
      SL := TStringList.Create;
      try
        // Charger la ressource RCDATA nommée "GATEAUXTXT"
        ResStream := TResourceStream.Create(HInstance, 'GATEAUXTXT', RT_RCDATA);
        try
          SL.LoadFromStream(ResStream);
        finally
          ResStream.Free;
        end;
     
        // Créer le tableau dynamique
        SetLength(Gateaux, SL.Count);
     
        // Copier les lignes dans le tableau dynamique
        for I := 0 to SL.Count - 1 do
          Gateaux[I] := SL[I];
      finally
        SL.Free;
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ChargerGateauxDepuisRessource;
     
      // Exemple d'utilisation
      ShowMessage('Premier gâteau : ' + Gateaux[0]);
    end;
    Tu gagnes en simplicité, en maintenabilité, et tu évites de toucher au code pour des données qui ne sont… que des données.
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 992
    Par défaut
    Hello,

    {$I Gateaux.pas} est traité lors de la compilation, alors que SaveToFile intervient à l’exécution. Le fichier généré ne pourra donc être inclus qu’à la compilation suivante.
    La question est plutôt : souhaitez-vous générer du code avant la compilation, ou simplement modifier des données pendant l’exécution ?
    Dans le premier cas, utilisez un générateur lancé avant le build. Dans le second, conservez les données dans un fichier externe. Le répertoire de destination défini dans l’EDI ne change pas cet ordre d’exécution.

    EDIT : événements de pré-construction de RAD Studio
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    6 027
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6 027
    Par défaut
    Et si tu ajoutais C:\Tmp à Chemin de recherche

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    je voudrais pouvoir mettre dans mon programme ZAlbum des podcasts (voir sources :Podcast.zip)

    Nom : Audiomean.jpg
Affichages : 91
Taille : 71,1 Ko

    version simplifié de mon prog. :
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
     
    program envoie;
     
    {$AppType CONSOLE}
    uses
      WINDOWS,
      FORMS,
      Sysutils,
      CLASSES,
      IdHTTP,
      ActiveX,
      IdSSL,
      IdURI,
      IdComponent,
      WinInet,
      audiomeanxml, // voir plus bas
      IdSSLOpenSSL;
     
    type
      TForm1 = class(TForm)
        procedure IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;  AWorkCount: Int64);
        procedure IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
        procedure IdHTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);{}
    //    procedure FormCreate(Sender: TObject);
      private
        { private declarations }
      public
        { Public declarations }
      end;
     
    TYPE  Las = RECORD
          Artist,               // (%a) Nom de L'Artiste
          Album,                // (%b) Titre de l'album
          Category,             // (%g) Categorie de l'album
          Comment,              // (%c) Commentaire
          Copyright,            // (%k) Copyright
          LINK                  // (%w) LINK
          : STRING;
          Numtracks: INTEGER;   // (%k) Nombre De Titres
    END; {Record}
     
     
    var SizeOfFile:Longint;
     
    //{$i .\podcast.pas}
    const audiomeans : array[0 .. 10] of string=(
    {00}  'https://feeds.audiomeans.fr/feed/c8088ac5-bb3e-42e5-889c-0cee1909b701.xml' // wave.audio - C'est plus compliqué que ça
    {01} ,'https://feeds.audiomeans.fr/feed/2634f188-47a0-48e1-b4ae-0ac360ed3ac3.xml' // Cherie FM France - Conte-moi l'aventure !
    {03} ,'https://feeds.audiomeans.fr/feed/4cea9cc7-2a24-4ae6-b64b-2dd7407edcf5.xml' // NRJ France - Briller en société
    {03} ,'https://feeds.audiomeans.fr/feed/11116473-1837-44dd-b2f9-b01afb38f6f1.xml' // NRJ FRANCE - Erreur à la barre
    {04} ,'https://feeds.audiomeans.fr/feed/278c8c9f-2297-44cc-8674-65e285cb80c1.xml' // NRJ France - Feu de camp
    {05} ,'https://feeds.audiomeans.fr/feed/26b67f8a-cf3d-47aa-8763-c8653f26b785.xml' // Podcast Story - Podcast Story
    {06} ,'https://feeds.audiomeans.fr/feed/1e1146ca-6d5d-4a7c-a1a2-0735872d9b07.xml' // Radio Classique - Les grands dossiers de l'Histoire par Franck Ferrand
    {07} ,''
    {08} ,''
    {09} ,''
    {10} ,''
    );
     
    destination='audiomeans.xml';
     
    var Form1: TForm1;
        idHttp1 : TIdHTTP;
        IdSSL1:TIdSSLIOHandlerSocketOpenSSL;//assume on Form
        Cpi:integer;
        Titres : TSTRINGLIST;
        Laser_Mp3:Las;
        Dest,U1:String;
        audiomeansXml:IXMLRss;
        Channel:IXMLChannel;
        Items:IXMLItemList;
     
    procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;  AWorkCount: Int64);
    begin
      if (AWorkMode=wmRead) and (SizeOfFile<>0) then WRITE(inttostr(trunc(AWorkCount/SizeOfFile*100))+'%   '+#13);
    end;
     
    procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
    begin
      if AWorkMode = wmRead then // Uniquement quand le composant reçoit des données
      begin
            SizeOfFile := AWorkCountMax; // Maximum = taille de l'élément
            WRITE('0%   '+#13);
      end;
    end;
     
    procedure TForm1.IdHTTPWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
    begin
        WRITELN('100%   '+#13);
    end;
     
    PROCEDURE BASE;
    BEGIN
          idHttp1 := TIdHTTP.Create(NIL);
          IdSSL1:=TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
          WITH IdSSL1 DO
          BEGIN
                SSLOptions.Method := sslvTLSv1_2;
                SSLOptions.SSLVersions := [sslvTLSv1_2];
                SSLOptions.Mode        := sslmClient;
                SSLOptions.VerifyMode  := [];
                SSLOptions.VerifyDepth := 0;
                PassThrough := false;
          END;
          WITH idHttp1 DO
          BEGIN
                HTTPOptions := HTTPOptions + [hoNoProtocolErrorException];
                IOHandler := IdSSL1;
                AllowCookies := True;
                HandleRedirects := True;
                Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0';
                Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
                Request.AcceptLanguage := 'en-GB,en;q=0.5';
                Request.Connection := 'keep-alive';
                Request.ContentType := 'application/x-www-form-urlencoded';
          END;
    END;
     
    FUNCTION DLFH(url,destination:STRING;P:Pointer=Nil): BOOLEAN;
    VAR   stream:TMemoryStream;
    BEGIN
          result:=False;
          stream:=TMemoryStream.Create;
          try
              idHttp1.Get(url, stream);
              result:=IdHTTP1.ResponseCode=200;
          except
                  on E: EIdHTTPProtocolException DO Result := False;
                  on E: Exception DO  Result := False;
          end;
          stream.Position := 0;
          if P=nil then
          begin
                stream.SaveToFile(destination);
          end
          else
          begin
                TStringlist(P).Clear;
                TStringlist(P).LoadFromStream(stream);
          end;
          stream.Free;
    END;
     
    FUNCTION downloadfilehttps(url:STRING;var selfile:TSTRINGLIST): BOOLEAN; overload;
    BEGIN
          idHttp1.OnWorkBegin := nil;
          idHttp1.OnWork := nil;
          idHttp1.OnWorkEnd := nil;
          result:=DLFH(url,'',selfile);
          sleep(500);
    END;
     
    FUNCTION downloadfilehttps(url,destination:STRING): BOOLEAN; overload;
    BEGIN
          idHttp1.OnWorkBegin := Form1.IdHTTP1WorkBegin;
          idHttp1.OnWork := Form1.IdHTTP1Work;
          idHttp1.OnWorkEnd := Form1.IdHTTPWorkEnd;
          result:=DLFH(url,destination);
    END;
     
    function AnsiToDOS(S: String): String;
    begin
      Result := S;
      UniqueString(Result);
      if S <> '' then begin
        CharToOemA(PAnsiChar(Result), PAnsiChar(Result));
      end;
    end;
     
     
    BEGIN
          CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
          Dest:=extractfilepath(paramstr(0));
          BASE;
          Titres:=TSTRINGLIST.Create;
          U1:=' ';
          for cpi:=0 to high(audiomeans) do
          if audiomeans[cpi]<>'' THEN
          BEGIN
                Fillchar(Laser_Mp3,sizeof(Laser_Mp3),0);
                downloadfilehttps(audiomeans[cpi],Dest+destination);
                audiomeansXml:=Loadrss(Dest+destination);
                Channel:=audiomeansXml.Channel;
                Items:=Channel.Item;
                writeln(AnsiToDOS(Channel.Title));
                Laser_Mp3.Artist:=trim(Channel.Author1);
                Laser_Mp3.Album:=trim(Channel.Title);
                Laser_Mp3.Numtracks:=Items.Count;
                Laser_Mp3.Copyright:=audiomeans[cpi];
                Laser_Mp3.Category:='last Update: '+Channel.LastBuildDate;
                Laser_Mp3.Comment:=Channel.Link;
                Laser_Mp3.Numtracks:=Titres.count;
                Titres.Add(Laser_Mp3.Artist+' - '+Laser_Mp3.Album+'{'+format('%.2d',[Cpi])+'} '+U1+''''+Laser_Mp3.Copyright+''' // '+Laser_Mp3.Artist+' - '+Laser_Mp3.Album);
                U1:=',';
          END
          ELSE  Titres.Add('Zzzzzzzzzzzzz{'+format('%.2d',[Cpi])+'} ,''''');
          titres.sort;
          For cpi:=0 to pred(Titres.Count) do Titres[Cpi]:=copy(Titres[Cpi],pos('{',Titres[Cpi]),Maxint);
          Titres.Insert(0,'const audiomeans : array[0 .. '+inttostr(high(audiomeans))+'] of string=(');
          Titres.Add(');');
          Titres.SaveToFile('Podcast.pas');(**)
          writeln('Appuyez sur une touche');
          Titres.free;
    END.
    dans le fichier Podcast.zip il faut rajouter les fichiers libeay32.dll et ssleay32.dll dans les rep. "Podcast\Fichiers ini" et "Podcast" (trop gros pour être mis dans le zip)
    le répertoire \audiomeans contient le fichier audiomeanxml.pas généré depuis : Audiomeanxml.xsd lui-même converti du fichier audiomeanxml.xml vers xsd
    c'est pour ça que je cherche à connaitre le répertoire de déstination dans l'EDI (triage du fichier podcast.pas avec des commentaires)

    si vous avez rajouter les fichiers libeay32.dll et ssleay32.dll comme indiqué il suffira de faire un click droit sur la zone des titres et de faire "mise à jour 'Fichiers ini\podcast.ini')"

  8. #8
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 757
    Billets dans le blog
    2
    Par défaut
    J’ai du mal à comprendre le but de cette opération.

    tu télécharge plusieurs flux RSS de podcasts Audiomeans, OK , en extrait les métadonnées (titre, auteur, lien, date…), puis tu génère automatiquement un fichier Podcast.pas

    Pourquoi ne pas parser les XML directement depuis leur URL, ou les charger en mémoire depuis l’application ?

    En générant un fichier Podcast.pas, tu verrouilles les données dans le code : toute mise à jour des flux RSS nécessite une recompilation, ce qui empêche l’application de refléter les nouveautés en temps réel.

    Autre problème : si des épisodes sont supprimés du flux, ton application continue de les lister. En lisant les XML directement depuis leur URL ou en les chargeant en mémoire au lancement, tu garantis que les données reflètent toujours l’état réel du flux RSS.
    Le fichier Podcast.pas rigidifie ton application : toute modification côté serveur (ajout, retrait, renommage) nécessite une recompilation pour être visible.

    Je pense que l’approche basée sur la génération d’un fichier Podcast.pas n’est pas la meilleure solution, car elle rigidifie l’application et empêche toute mise à jour dynamique des flux.

    Ton application dépend d’une connexion Internet et d’un serveur distant : dans ce cas, autant travailler directement avec ce serveur et récupérer les données en temps réel.
    En revanche, si ton application doit fonctionner hors‑ligne et que tu télécharges les fichiers audio à l’avance, alors intégrer les métadonnées dans le programme peut se justifier.
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 992
    Par défaut
    @ZonZorg,

    Si je comprends bien votre nouveau code, vous générez toujours Podcast.pas pendant l’exécution avec SaveToFile. Il est donc trop tard pour que cette version soit incluse dans l’exécutable déjà compilé.

    Il faut séparer cette génération du programme principal :

    Créer un petit exécutable générateur, puis l’appeler dans les événements de pré-construction de RAD Studio.

    Le déroulement sera alors :

    génération de Podcast.pas, puis compilation du projet qui l’inclut.

    Si vous souhaitez que la mise à jour soit immédiatement visible sans recompilation, les URL ne doivent pas être placées dans un fichier source inclus avec {$I Podcast.pas}. Conservez-les dans votre fichier INI et chargez-les à l’exécution.

    Je vous avais déjà indiqué le mécanisme dans mon précédent message -> événements de pré-construction de RAD Studio.

    Il faut appeler un programme générateur à cette étape, afin que Podcast.pas soit créé avant sa compilation, et non depuis l’exécutable déjà compilé.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    6 027
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6 027
    Par défaut
    La pré-construction n'existait pas en D7.

  11. #11
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 992
    Par défaut
    Effectivement, mais où était-il indiqué qu’il s’agissait de D7 ? La capture montre une ancienne version de l’EDI et le .cfg va dans ce sens, mais rien ne permettait, à ma connaissance, d’identifier précisément Delphi 7 ou ai-je mal lu ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  12. #12
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    6 027
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 6 027
    Par défaut
    Cette page d'options ne me rappelle rien, c'est du très vieux. Et sans thème activé (sans manifest), c'est du très très vieux

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 992
    Par défaut
    D’accord, l’apparence permettait effectivement de soupçonner une très ancienne version. Cela dit, pour une question portant précisément sur les fonctionnalités de l’EDI, indiquer dès le départ la version de Delphi aurait évité cette ambiguïté. Une capture et la présence d’un .cfg ne permettent pas nécessairement d’identifier la version exacte.

    Ça serait bien que le PO nous informe précisément...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    je peux vous confirmer que c'est bien en delphi D7.
    j'ai testé d'autre version mais l'egonomie ne me plaisait pas, et puis pour ce que j'en fais celà m'est largement suffisant.
    je programme "à la papa" et cela me va.
    merci à vous d'avoir porté attention à cette discussion.

  15. #15
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 38
    Par défaut
    et donc ma solution à été de travailler directement ma source dans le répertoire de destination.
    le {$i ...} est bien modifié dès que j'y ajoute un .xml

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2024, 09h49
  2. Réponses: 4
    Dernier message: 28/10/2023, 17h39
  3. Erreur "function ' ' n'est pas définie dans l'expression"
    Par wanou_le_fou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/07/2007, 16h13
  4. comment ne pas enregistrer dans le fichier log?
    Par trotters213 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 21/03/2005, 14h56
  5. lien popup href défini dans javascript mé pas visibdans page
    Par Yoyo_galère dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 13/01/2005, 14h43

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