Depuis peu, j'ai migré un projet sous Delphi 2009 sur un poste sous XP Pro (2Go de ram, SP3 vers XE3) sur un poste en Win7 (64bits, 3Go de ram).
J'utilise les composants IBx pour me connecter et travailler avec la BDD sous Firebird.
Le programme prend un fichier texte avec x lignes de longueur 120 et le transforme après divers contrôles vers un fichier au format XML.
Dans le fichier texte, chaque ligne correspond à un tiers avec un montant, BBAN/IBAN, etc....
Je prends un fichier qui contient 6914 lignes (1.06 mo), donc 6914 tiers.
Si le fichier est ok, on enregistre chaque ligne dans une table LOT pour ensuite l'afficher dans un DBGrid (via un DataSource).
Pendant le traitement de chaque ligne, on contrôle la présence du tiers dans une table TIERS.
S'il existe (SELECT OPEN CLOSE), on ne fait rien et s'il n'existe pas, on insère le tiers (INSERT ExecSQL et COMMIT).
Dans tous les cas, on insère (INSERT et ExecSQL) chaque ligne du fichier dans la table LOT et on commit uniquement à la fin des contrôles.
Du coup, j'ai mis en place 2 transactions, une pour la table LOT et une pour la table TIERS.
Sous XP, tout fonctionne impeccable.
En revanche sous Win7, avec ce même fichier j'ai systématiquement une erreur EOutofMemory vers la 5000 ème ligne sur 6914 quand je contrôle la présence du Tiers dans la Table TIERS.
Avez-vous déjà fait face à ce problème.
Merci pour votre aide et si vous avez besoin d'autres informations...
Cordialement.
Partager