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 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
|
// Inporter un profil
void __fastcall TPrincipalForm::ImporterProfil1Click(TObject *Sender)
{
// On crée la boite de dialogue pour sélectionner le profil
TOpenDialog *SelectionnerExport = new TOpenDialog(PrincipalForm);
// On initialise le répertoire par défaut de la boite de dialogue
SelectionnerExport->InitialDir = RepertoireExportProfil;
// On définit l'extension des fichiers affiché
SelectionnerExport->DefaultExt = ".zip";
// On définit le filtre des fichiers
SelectionnerExport->Filter = "Fichiers ZIP (*.zip)|*.zip|Tous fichiers (*.*)|*.*";
// Si l'utilisateur à cliqué sur Ok
if(SelectionnerExport->Execute())
{
// Si le répertoire d'export de profil à changé
if(AnsiString(ExtractFilePath(SelectionnerExport->FileName)).AnsiCompareIC(RepertoireExportProfil) != 0)
{
// On récupère le nouveau répertoire des exports de profils
RepertoireExportProfil = ExtractFilePath(SelectionnerExport->FileName);
// On sauvegarde le nouveau paramètre
SauvegarderParametres(false, false, false, true);
}
// On va choisir le
TSelRepertoireForm *SelRepertoire = new TSelRepertoireForm(PrincipalForm);
// On renseigne le titre de la boite de dialogue
SelRepertoire->Caption = "Repertoire de profil";
// Si le répertoire des profils n'existe pas
if(!DirectoryExists(RepertoireProfil))
{
// On remplace le Répertoire source par le répertoire de l'application
RepertoireProfil = ExtractFilePath(Application->ExeName);
// On sauvegarde le nouveau répertoire source
SauvegarderParametres(true, false, false, false);
}
// On charge le répertoire des profils
SelRepertoire->DirectoryListBox->Directory = RepertoireProfil;
// On positionne la boite de dialogue
SelRepertoire->Left = (ClientWidth / 2) - (SelRepertoire->Width / 2);
SelRepertoire->Top = (ClientHeight / 2) - (SelRepertoire->Height / 2);
// On ouvre la boite de dialogue
if(SelRepertoire->ShowModal() == mrOk)
{
// Si le répertoire de sélection à changé
if(SelRepertoire->DirectoryListBox->Directory.AnsiCompareIC(RepertoireProfil) != 0)
{
// On mémorise le nouveau répertoire des profils
RepertoireProfil = SelRepertoire->DirectoryListBox->Directory;
// On sauvegarde le nouveau répertoire source
SauvegarderParametres(true, false, false, false);
}
// Répertoire temporaire pour la décompression
RepertoireTemp = RepertoireProfil + "\\Temp";
// On renseigne le titre de la boite de dialogue
SelRepertoire->Caption = "Repertoire des Images";
// Si le répertoire des Images n'existe pas
if(!DirectoryExists(RepertoireImages))
{
// On remplace le Répertoire Images par le répertoire de l'application
RepertoireImages = ExtractFilePath(Application->ExeName);
// On sauvegarde le nouveau répertoire source
SauvegarderParametres(false, true, false, false);
}
// On charge le répertoire des images
SelRepertoire->DirectoryListBox->Directory = RepertoireImages;
// On ouvre la boite de dialogue
if(SelRepertoire->ShowModal() == mrOk)
{
// Si le répertoire de sélection à changé
if(SelRepertoire->DirectoryListBox->Directory.AnsiCompareIC(RepertoireImages) != 0)
{
// On mémorise le nouveau répertoire des Images
RepertoireImages = SelRepertoire->DirectoryListBox->Directory;
// On sauvegarde le nouveau répertoire source
SauvegarderParametres(false, true, false, false);
}
// On crée le répertoire temporaire pour la décompression
if(CreateDirectory(RepertoireTemp.c_str(), 0))
{
// on décompresse le fichier dans le répertoire des exports
Compresseur->DecompressFile(SelectionnerExport->FileName, RepertoireTemp, false, false);
// Objet pour la recherche de fichier
// nom du fichier de profil
AnsiString NomFichierProfil = "";
TSearchRec InfosFichiers;
// S'il existe au moin un fichier
if(FindFirst(RepertoireTemp + "\\*.*", faAnyFile, InfosFichiers) == 0)
{
bool Sortie = false;
do
{
// Si l'extension du fichier est .xml
if(ExtractFileExt(InfosFichiers.Name).LowerCase().AnsiCompareIC(".xml") == 0)
{
// on récupère le nom du fichier de profil
NomFichierProfil = InfosFichiers.Name;
// On a trouver le fichier, on sort
Sortie = true;
}
// Si on a traité tous les fichiers
if(FindNext(InfosFichiers))
{
// On sort de la boucle
Sortie = true;
}
}
// Tant qu'il reste des fichiers
while(!Sortie);
// On ferme la recherche
FindClose(InfosFichiers);
}
// On charge le fichier de profil
ChargerFichierXML(RepertoireTemp + "\\" + NomFichierProfil);
// on détruit le fichier car on en a plus besoin
DeleteFile(RepertoireTemp + "\\" + NomFichierProfil);
// On va balayer les questions du profil
for(int i = 0; i < ProfilQuestions->ListeQuestions->Count; i++)
{
// On extrait la question
TQuestion *Question = (TQuestion *)(ProfilQuestions->ListeQuestions->Items[i]);
// On va balayer toutes les images de la questions
for(int j = 0; j < Question->ListeImages->Count; j++)
{
// On extrait l'image
TImageProfil *ImageProfil = (TImageProfil *)(Question->ListeImages->Items[j]);
ShowMessage("Chemin de l'image dans le profil " + ImageProfil->Chemin);
// on construit le nouveau chemin de l'image
AnsiString NouveauCheminImage = RepertoireImages + "\\";
NouveauCheminImage += ExtractFileName(ImageProfil->Chemin);
ShowMessage("Nouveau chemin de l'image " + NouveauCheminImage);
// On regarde si le fichier existe déjà
if(FileExists(NouveauCheminImage))
{
AnsiString Message = "Le fichier" + NouveauCheminImage + " existe déjà !\nVoulez-vous l'ecraser ?";
// Si l'utilisateur désire écraser le fichier
if(Application->MessageBox(Message.c_str() ,"Attention !", MB_YESNO) == IDYES)
{
// On détruit le fichier
DeleteFile(NouveauCheminImage);
}
}
if(!CopyFile(ImageProfil->Chemin.c_str(), NouveauCheminImage.c_str(), true))
//if (!MoveFile(ImageProfil->Chemin.c_str(), NouveauCheminImage.c_str()))
{
ShowMessage("Erreur dans le déplacement des images !");
}
// on remplace le chemin de l'image par le nouveau
ImageProfil->Chemin = NouveauCheminImage;
}
}
// Crée le document XML
CreerFichierXML();
// on regarde si un fichier portant le même nom existe déja
if(FileExists(RepertoireProfil + "\\" + NomFichierProfil))
{
AnsiString Message = "Le fichier" + RepertoireProfil + "\\" + NomFichierProfil + " existe déjà !\nVoulez-vous l'ecraser ?";
// Si l'utilisateur désire écraser le fichier
if(Application->MessageBox(Message.c_str() ,"Attention !", MB_YESNO) == IDYES)
{
// On détruit le fichier
DeleteFile(RepertoireProfil + "\\" + NomFichierProfil);
}
}
// On le sauvegarde
DocumentXML->SaveToFile(RepertoireProfil + "\\" + NomFichierProfil);
// On vide el répertoire temporaire
ViderRepertoireTemp();
// on détruit le profil
delete ProfilQuestions;
// On marque qu'il n'y a plus de profil de chargé
ProfilCharge = false;
}
else
{
// Le répertoire n'a pas été créé
ShowMessage("Erreur dans la création du répertoire temporaire pour l'extraction du profil !");
}
}
}
}
} |
Partager