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

Outils Delphi Discussion :

[Inno Setup]l'espace disque disponible


Sujet :

Outils Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut [Inno Setup]l'espace disque disponible
    Bonjour

    je voudrais rajouter la possibiliter de voir l'espace disque disponible et l'espace requis par le jeux

    j'ai reussi a trouver le code pour avoir l'espace disque disponible sauf que quelque soit le lecteur que je choisie les information sur l'espace disque disponible ne change pas voir screen




    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
    Function NumToStr(Float: Extended): String;
    Begin
    Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.');
    while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do
    SetLength(Result, Length(Result)-1);
    End;
     
    Function MbOrTb(Byte: Extended): String;
    begin
    if Byte < 1024 then Result:= NumToStr(Byte) + ' Mb' else
    if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' Gb' else
    Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' Tb'
    end;
    procedure InitializeWizard3();
    var
    Page: TWizardPage;
    lbl: TLabel;
    Path: String;
    FreeMB, TotalMB: Cardinal;
    begin
    Path := ExpandConstant('{pf}');
    GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
    Page := PageFromID(wpSelectDir);
     
    lbl := TLabel.Create(Page);
    lbl.Width := ScaleX(75);
    lbl.Height := ScaleY(23);
    lbl.Caption := ExpandConstant('Espace disponible: ') + MbOrTb(FreeMB);
    lbl.Left := 0;
    lbl.Top := 175;
    lbl.Parent := Page.Surface;
     
    end;
    procedure InitializeWizard();
    begin
    //InitializeWizard1();
    //InitializeWizard2();
    InitializeWizard3();
    end;

  2. #2
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Parce qu'il me semble que tu interroges toujours le même disque. en effet,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Path := ExpandConstant('{pf}');
    Tiré de la documentation d'InnoSetup

    {pf}
    Program Files. The path of the system's Program Files directory. {pf} is equivalent to {pf32} unless the install is running in 64-bit mode, in which case it is equivalent to {pf64}.

    D'ailleurs il est rajouté dans l'exemple la ligne de commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      // Get and display free megabytes on the Program Files drive
    Essaye de remplacer {pf} par {app}

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    non ca marche pas

    j'ai un message d'erreur qui me dit:

    Line66:
    Exception:Internal error:An attemp was made to expand the "app" constant before is was initialized

  4. #4
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Effectivement la variable {app} n'est pas envore initialisée.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Page := PageFromID(wpSelectDir);
    path:=ExtractFileDrive(Page.DirEdit.Text);  
    GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
    Sans certitude car pas testé

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    marche pas

    il me met unknow identifier diredit

  6. #6
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path:=ExtractFileDrive(WizardForm.DirEdit.Text);  
    GetSpaceOnDisk(Path, True, FreeMB, TotalMB);

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    problème résolu

    en cherchent un peu sur internet j'ai trouvé pourquoi ça marchait pas.
    en fait il me manquait pas mal de choses dans le code pour que ça marche

    grand merci à toi fxg pour ton aide

    si le code vous intéresse mp moi

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    La solution pourrait intéresser tout le monde, si elle était sur le forum...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    exacte voici le code:

    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
    #define NeedSize 10000
     
    [Setup]
    AppName=My Program
    AppVerName=My Program
    DefaultDirName={pf}\My Program
    DefaultGroupName=My Program
    OutputBaseFilename=setup
    OutputDir=.
     
    Code]
    var
      PathLabel, TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TLabel;
      FreeMB, TotalMB: Cardinal;
      Drive: String;
     
    Function NumToStr(Float: Extended): String;
    Begin
    Result:= Format('%.2n', [Float]); StringChange(Result, ',', ',');
    while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = ',')) and (Pos(',', Result) > 0) do
    SetLength(Result, Length(Result)-1);
    End;
     
    function MbOrTb(Float: Extended): String;
    begin
    if Float < 1024 then Result:= NumToStr(Float)+' MB' else
    if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' GB' else
    Result:= NumToStr(Float/(1024*1024))+' TB';
    end;
     
    procedure DirEditOnChange(Sender: TObject);
    begin
      Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
      GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
      TotalSpaceLabel.Caption:= 'Total disk space: '+MbOrTb(TotalMB);
      FreeSpaceLabel.Caption:= 'Available disk space: '+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
      NeedSpaceLabel.Caption:= 'Required disk space: '+MbOrTb({#NeedSize});
      WizardForm.NextButton.Enabled:= (FreeMB>{#NeedSize});
    end;
     
    procedure InitializeWizard();
    begin
      with WizardForm do
      begin
        PathLabel := TLabel.Create(WizardForm)
        DirEdit.OnChange := @DirEditOnChange;
      end;
     
      TotalSpaceLabel:= TLabel.Create(WizardForm);
      TotalSpaceLabel.AutoSize:= False;
      TotalSpaceLabel.SetBounds(0, 155, 300, 20);
      TotalSpaceLabel.Parent:= WizardForm.SelectDirpage;
     
      FreeSpaceLabel:= TLabel.Create(WizardForm);
      FreeSpaceLabel.AutoSize:= False;
      FreeSpaceLabel.SetBounds(0, 175, 300, 20);
      FreeSpaceLabel.Parent:= WizardForm.SelectDirpage;
     
      NeedSpaceLabel:= TLabel.Create(WizardForm);
      NeedSpaceLabel.AutoSize:= False;
      NeedSpaceLabel.SetBounds(0, 195, 300, 20)
      NeedSpaceLabel.Parent:= WizardForm.SelectDirpage;
    end;
     
    procedure CurPageChanged(CurPageID: Integer);
    begin
      if CurPageID=wpSelectDir then
      begin
        DirEditOnChange(nil)
      end;
    end;

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Merci, c'est sympa !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  11. #11
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Citation Envoyé par Fxg Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    path:=ExtractFileDrive(WizardForm.DirEdit.Text);  
    GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
    Finalement c'est bien qu'est ce que je disais.....

    Par contre il ne manque pas des lignes dans le fichier iss collé ? par exemple le [ avant CODE

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Fxg Voir le message
    Finalement c'est bien qu'est ce que je disais.....

    Par contre il ne manque pas des lignes dans le fichier iss collé ? par exemple le [ avant CODE
    oui il manque le [ avant code]

    je l'est enlever parce que j'ai utilisé la balise [code]

    puisque j'y suis je voudrais poster un message pour savoir si quelqu'un si connaissait en language scripts pour installshield mais je sais pas ou poster mon message.

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

Discussions similaires

  1. Connaitre l'espace disque disponible
    Par miko91 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2007, 14h46
  2. Réponses: 3
    Dernier message: 12/10/2007, 09h22
  3. Récupérer l'espace disque disponible
    Par Polux63 dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 24/08/2007, 13h10
  4. [VB..] Espace disque disponible
    Par SfJ5Rpw8 dans le forum Contribuez
    Réponses: 1
    Dernier message: 18/09/2006, 18h57
  5. [ftp] obtenir l'espace disque disponible
    Par FFF dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 27/11/2005, 14h29

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