Je cherche à créer un petit mod pour un jeu que j'affectionne particulièrement (Capitalism Lab).
Ce que je veux modifier se trouve dans un fichier *.RES qui contient des BDD au format DBF.
En ouvrant ce fichier RES avec un éditeur Héxa je me suis rendu compte qu'il y avait plusieurs DBF inclus à l'intérieur.
En regardant un exemple de DBF correctement formaté je suis rendu compte qu'un DBF commencé par le caractère Héxa 03 puis terminé avec le caractère 1a.
Je me suis donc fait un fichier ressource exemple (CAPMOD.RES) comme ceci:

Le jaune représente 3 fichiers DBF à l'intérieur de CAPMOD.RES.
J'ai donc pondu ce code qui est censé extraire le premier dbf (billionnaires.dbf) rencontré:
Code : Tout sélectionner
#include<File.au3>
;Ouverture du fichier CAPMOD.RES
$fichier_a_ouvrir = "CAPMOD.RES"
$fichier = FileOpen($fichier_a_ouvrir, 16)
$contenu_fichier = FileRead($fichier)
FileClose($fichier)
;Ecriture du fichier BILLIONAIRES.DBF
_Ecrire_dbf($contenu_fichier, 'billionaires.dbf', 1)
Func _Ecrire_dbf($fichier_source, $nom_fichier, $num_chaine)
Local $marqueur_debut = '03'
Local $marqueur_fin = '1a'
Local $recherche = '(' &$marqueur_debut& '.+?' &$marqueur_fin& ')'
MsgBox(0, "CAPMOD.RES", $recherche)
$resultat_recherche = StringRegExpReplace ($fichier_source, '(?:.*?' &$recherche& '){' &$num_chaine& '}.*' , '$1' )
MsgBox(0, "CAPMOD.RES", $resultat_recherche)
;$fichier_a_ecrire = FileOpen("billionaires.dbf", 18)
;FileWrite($fichier_a_ecrire, $resultat_recherche)
EndFunc




