Clément.a Posté(e) le 28 février 2013 Posté(e) le 28 février 2013 Est il possible avec la fonction "open "a" " de ne pas réécrire obligatoirement à la fin du fichier mais a un endroit qu'on le lui indiquerait?
Clément.a Posté(e) le 28 février 2013 Auteur Posté(e) le 28 février 2013 Plus généralement j'ai un fichier .txt dans lequel j'ai deja ecrit des choses et j'aimerais soit en supprimer soit en réécrire mais par-dedans, est ce que c'est possible ?
bonuscad Posté(e) le 1 mars 2013 Posté(e) le 1 mars 2013 Les fonctions (read-line) (write-line), cela est vrai aussi pour (prin1) (princ) (print) (write-char) (read-char), ne peuvent se faire que sous la forme séquentielle dans un fichier ouvert. Donc pour faire ce que tu veux, cela oblige à lire intégralement le fichier, puis après l'ordonner en mémoire et réécrire l'ensemble. Cette lecture et écriture intégrale peut être pénalisante en temps de traitement sur de gros fichiers. Pour faire ce que veux, il faudrait se tourner vers la liaison excel en colonnes et rangées.Voir les liaisons sous excel en lisp sur le blog de patrick_35, par exemple Api_xls v2.00 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Clément.a Posté(e) le 1 mars 2013 Auteur Posté(e) le 1 mars 2013 ok c'est bien ce que je pensait. Cette lecture et écriture intégrale peut être pénalisante en temps de traitement sur de gros fichiers.C'est un peut ça qui me génait mais on verra par la suite et si c'est vraiment long j essayerai avec les liaisons sous excel. Merci pour ta réponse @+
Patrick_35 Posté(e) le 1 mars 2013 Posté(e) le 1 mars 2013 Salut Tu peux regarder l'objet "ADODB.Stream" qui permet de faire des lectures/écritures directe, aussi bien binaire que texte, mais c'est assez arduUn exemple pour lire une partie ou tout un fichier binaire. ; Lecture d'un fichier binaire ; Merci à highflyingbird ; Trouvé sur TheSwamp.org ; http://www.theswamp.org/index.php?topic=36656.msg417089#msg417089 ; Modifié par Patrick_35 pour positionner le début de la lecture et la longueur à lire ; ReadBinary (fichier position longueur) ; Exemple : (readbinary "c:/toto.bmp" 10 23) pour une lecture partiel ; Exemple : (readbinary "c:/toto.bmp" 10 nil) pour une lecture partiel à partir de et jusqu'a la fin du fichier ; Exemple : (readbinary "c:/toto.bmp" nil nil) pour lire tout le fichier ; Résultat : Une chaine de texte en hexa (ex : "4DE50800FF") (defun readbinary (fichier position longueur / str wsObj) (setq wsObj (vlax-create-object "ScriptControl")) (or position (setq position 0) ) (if (or (not longueur) (zerop longueur)) (setq longueur (- (vl-file-size fichier) position)) ) (vlax-put wsObj "language" "VBS") (setq str (strcat "Function ReadBinary(fichier) Const adTypeBinary = 1 Dim stream, xmldom, node Set xmldom = CreateObject(\"Microsoft.XMLDOM\") Set node = xmldom.CreateElement(\"binary\") node.DataType = \"bin.hex\" Set stream = CreateObject(\"ADODB.Stream\") stream.Type = adTypeBinary stream.Open stream.LoadFromFile fichier stream.Position = " (itoa position) " node.NodeTypedValue = stream.Read(" (itoa longueur) ") stream.Close Set stream = Nothing ReadBinary = node.Text Set node = Nothing Set xmldom = Nothing End Function" ) ) (vlax-invoke wsObj 'ExecuteStatement str) (setq str (vlax-invoke wsObj 'run "ReadBinary" fichier)) (vlax-release-object wsObj) str ) Mais le plus simple est la méthode de Bonus @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant