Accueil > Forum > > > > String et Retour chariot
String et Retour chariot
mardi 26 mars 2002 à 16:09:06 |
String et Retour chariot

lomig
|
J'ai une chaine de caractere constituée de deux mots que je veux séparer par un retour chariot et ensuite insérer cette chaine dans un fichier texte. Si j'utilise (#13) ca me fait bien un retour chariot mai ssi je veu xlire le fichier avec le "NotePad" de Windows j'ai un petit carré qui apparait au lieu du retour chariot. Si j'ouvre avec "Word Pad", c'est ok, je sauvagarde au ficheir texte. Je relance avec "NotePad" et zou la c'est bon! Comment faire pour avoir un retour chariot directement compréhensible par NotePad???? Mon Code actuel: LaChaine :='Ablabalbalba' + #13 + 'Fleudeugeu'; Guillaume
|
|
mardi 26 mars 2002 à 16:31:08 |
J'ai une réponse ....mais svp lisez ma seconde question....

lomig
|
Bon j'ai trouvé une solution pour l'histoire du retour chariot: Je ne sais pas pourquoi mais si on met "#13#10" au lieu de "#13" ca marche?????....
Par contre j'ai une autre question a laquelle perosnne ne veut (peut) repondre quel que soit le forum sur laquelle je la poste...Si ca interesse quelqu'un: ********* Question2 *********
J'ai une BDD avec une table dont un des champs contient un Blob OLE qui pointe vers un fichier Word. Mon but c'est de récuperer automatiquement tout le contenu textuel (que le texte) de ces fichiers Word, d'y appliquer des filtres (genre virer les noms de familles, les adresses etc...)
Bon apres maintes galères pour accéder aux données (dont un truc très chiant, le fait que un OLE définit directement sous Paradox est incompatible avec Delphi!!!), j'y arrive a peu près, mon problème principal étant désormais la lenteur. En effet je récupère le OLE et je le mets dans un OleContainer, pour pouvoir utiliser la fonction copy de word sur le texte du document. Puis je "pastefromClipboard" dans un TRichEdit et finalement je récupère le texte du document avec la propriété .text du TRichEdit. C'est de la bidouille, et si quelqu'un a une petite idée pour récupérer directement le texte du Word sans passer par TRichEdit (pour virer les code de Word), je suis preneur.
Ci dessous mon code actuel: while not DataModulePrincipal.dtsrcPatients.DataSet.Eof do Begin
NumDossPat:=0; with DataModulePrincipal.dtsrcPatients.DataSet do Begin LeNumPat:=Fields[4].AsInteger; End; If LeSexe='F' then EnTete:='<SEXE_PATIENT>FEMME</SEXE_PATIENT>' else EnTete:='<SEXE_PATIENT>HOMME</SEXE_PATIENT>';
LeNumPat_Chaine:='<NUMPAT>' + IntToStr(LeNumPat) + '</NUMPAT>'; unitPrincipale.frmPrincipal.edtPatientEnCours.Text:=LeNom + ' ' + LePrenom;
//pour le patient courant on récupere tout ses dossiers dans la table DOSS LaRequeteSQL:= 'select * .....; DataModulePrincipal.qryRecupDossiersPatient.SQL.Text:=LaRequeteSQL; DataModulePrincipal.qryRecupDossiersPatient.Active:=True; unitPrincipale.frmPrincipal.dbgDossiersPatient.Update;
//début de la boucle sur les dossiers d'un patient While not DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Eof do Begin
if DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Fields[3].IsBlob() then begin
NumDossPat:=NumDossPat+1; NomFichierDest:= IntToStr(LeNumPat) + '_' + IntToStr(NumDossPat) + '.txt'; TamponBlob:= TBlobStream.Create(DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Fields[3] as TBlobField,bmRead);
Try if TamponBlob.Size > 0 then //on charge le fichier OLE du champ de la table dans le OleContainer de l'interface unitPrincipale.frmPrincipal.olcDocument.LoadFromStream(TamponBlob); //unitPrincipale.frmPrincipal.olcDocument.visible:=False; unitPrincipale.frmPrincipal.olcDocument.Run;
//on remplace les noms et prénoms qui apparaissent dans le documents word //pour celà on utilise les fonctions disponibles directement dans Word //En les executant directement a partir du OleContainer While unitPrincipale.frmPrincipal.olcDocument.OleObject.Range.Find.Execute(findtext:=LeNom, replacewith:=LeNumPat_Chaine)=True do Begin End; while unitPrincipale.frmPrincipal.olcDocument.OleObject.Range.Find.Execute(findtext:=LePrenom, replacewith:=LeNumPat_Chaine)= True do Begin End;
//on selectionne et copie dans le presse papier (clipboard) le contenu du fichier word unitPrincipale.frmPrincipal.olcDocument.OleObject.content.select; unitPrincipale.frmPrincipal.olcDocument.OleObject.content.Copy;
//on nettoie le TRichEdit treContenuDoc unitPrincipale.frmPrincipal.treContenuDoc.Clear;
unitPrincipale.frmPrincipal.treContenuDoc.PasteFromClipboard; LeTexteDuDoc:= unitPrincipale.frmPrincipal.treContenuDoc.Lines.GetTexT(); LeFichierDest:=TFileStream.create(LeCheminDesFichiers + NomFichierDest,fmCreate); LeFichierDest.Write(PChar(LeTexteDuDoc)^, Length(LeTexteDuDoc)); LeFichierDest.Destroy; Finally TamponBlob.Free; //unitPrincipale.frmPrincipal.olcDocument.DestroyObject;
End; end;//fin du test if sur le Blob
DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Next;//on passe au document suivant End; //fin de la Boucle sur les dossiers d'un patient //on passe au patient suivant DataModulePrincipal.dtsrcPatients.DataSet.Next;//on passe au patient suivant end; //Fin de la boucle sur tout les patients
|
|
mardi 26 mars 2002 à 16:32:59 |
Excusez ma maladresse

lomig
|
Désolé pour le message précédent qui témoigne de mon état actuel d'énervement sur cette question de manip de texte cotenu dans un Blob Ole WOrd....
|
|
mardi 26 mars 2002 à 21:11:52 |
Re : J'ai une réponse ....mais svp lisez ma seconde question....

Delphiprog
|
En clair, tu veux juste récupérer le contenu textuel d'un document Word, si j'ai bien compris.
En utilisant les capacités d'automation de Word, il est possible (entr'autres) d'exporter le contenu d'un document word sous forme de texte puis de la charger dans un composant d'édition multiligne.
Avec OLEContainer, cà marche, mais c'est long et lourd à manipuler.
Voir "Importer une bibliothèque de types" dans delphi. Dans l'éditeur de la bibliothèque de type, tu trouveras les propriétés, méthodes et évènements exposés par le serveur intégré dans Word.
May Delphi be with you.
------------------------------- Réponse au message : -------------------------------
Bon j'ai trouvé une solution pour l'histoire du retour chariot: Je ne sais pas pourquoi mais si on met "#13#10" au lieu de "#13" ca marche?????....
Par contre j'ai une autre question a laquelle perosnne ne veut (peut) repondre quel que soit le forum sur laquelle je la poste...Si ca interesse quelqu'un: ********* Question2 *********
J'ai une BDD avec une table dont un des champs contient un Blob OLE qui pointe vers un fichier Word. Mon but c'est de récuperer automatiquement tout le contenu textuel (que le texte) de ces fichiers Word, d'y appliquer des filtres (genre virer les noms de familles, les adresses etc...)
Bon apres maintes galères pour accéder aux données (dont un truc très chiant, le fait que un OLE définit directement sous Paradox est incompatible avec Delphi!!!), j'y arrive a peu près, mon problème principal étant désormais la lenteur. En effet je récupère le OLE et je le mets dans un OleContainer, pour pouvoir utiliser la fonction copy de word sur le texte du document. Puis je "pastefromClipboard" dans un TRichEdit et finalement je récupère le texte du document avec la propriété .text du TRichEdit. C'est de la bidouille, et si quelqu'un a une petite idée pour récupérer directement le texte du Word sans passer par TRichEdit (pour virer les code de Word), je suis preneur.
Ci dessous mon code actuel: while not DataModulePrincipal.dtsrcPatients.DataSet.Eof do Begin
NumDossPat:=0; with DataModulePrincipal.dtsrcPatients.DataSet do Begin LeNumPat:=Fields[4].AsInteger; End; If LeSexe='F' then EnTete:='<SEXE_PATIENT>FEMME</SEXE_PATIENT>' else EnTete:='<SEXE_PATIENT>HOMME</SEXE_PATIENT>';
LeNumPat_Chaine:='<NUMPAT>' + IntToStr(LeNumPat) + '</NUMPAT>'; unitPrincipale.frmPrincipal.edtPatientEnCours.Text:=LeNom + ' ' + LePrenom;
//pour le patient courant on récupere tout ses dossiers dans la table DOSS LaRequeteSQL:= 'select * .....; DataModulePrincipal.qryRecupDossiersPatient.SQL.Text:=LaRequeteSQL; DataModulePrincipal.qryRecupDossiersPatient.Active:=True; unitPrincipale.frmPrincipal.dbgDossiersPatient.Update;
//début de la boucle sur les dossiers d'un patient While not DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Eof do Begin
if DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Fields[3].IsBlob() then begin
NumDossPat:=NumDossPat+1; NomFichierDest:= IntToStr(LeNumPat) + '_' + IntToStr(NumDossPat) + '.txt'; TamponBlob:= TBlobStream.Create(DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Fields[3] as TBlobField,bmRead);
Try if TamponBlob.Size > 0 then //on charge le fichier OLE du champ de la table dans le OleContainer de l'interface unitPrincipale.frmPrincipal.olcDocument.LoadFromStream(TamponBlob); //unitPrincipale.frmPrincipal.olcDocument.visible:=False; unitPrincipale.frmPrincipal.olcDocument.Run;
//on remplace les noms et prénoms qui apparaissent dans le documents word //pour celà on utilise les fonctions disponibles directement dans Word //En les executant directement a partir du OleContainer While unitPrincipale.frmPrincipal.olcDocument.OleObject.Range.Find.Execute(findtext:=LeNom, replacewith:=LeNumPat_Chaine)=True do Begin End; while unitPrincipale.frmPrincipal.olcDocument.OleObject.Range.Find.Execute(findtext:=LePrenom, replacewith:=LeNumPat_Chaine)= True do Begin End;
//on selectionne et copie dans le presse papier (clipboard) le contenu du fichier word unitPrincipale.frmPrincipal.olcDocument.OleObject.content.select; unitPrincipale.frmPrincipal.olcDocument.OleObject.content.Copy;
//on nettoie le TRichEdit treContenuDoc unitPrincipale.frmPrincipal.treContenuDoc.Clear;
unitPrincipale.frmPrincipal.treContenuDoc.PasteFromClipboard; LeTexteDuDoc:= unitPrincipale.frmPrincipal.treContenuDoc.Lines.GetTexT(); LeFichierDest:=TFileStream.create(LeCheminDesFichiers + NomFichierDest,fmCreate); LeFichierDest.Write(PChar(LeTexteDuDoc)^, Length(LeTexteDuDoc)); LeFichierDest.Destroy; Finally TamponBlob.Free; //unitPrincipale.frmPrincipal.olcDocument.DestroyObject;
End; end;//fin du test if sur le Blob
DataModulePrincipal.dtsrcListDossiersPatient.DataSet.Next;//on passe au document suivant End; //fin de la Boucle sur les dossiers d'un patient //on passe au patient suivant DataModulePrincipal.dtsrcPatients.DataSet.Next;//on passe au patient suivant end; //Fin de la boucle sur tout les patients
|
|
mercredi 27 mars 2002 à 09:00:38 |
Re : J'ai une réponse ....mais svp lisez ma seconde question....

lomig
|
Effectivement avec OleContainer on peut le faire, et effectivement c'est tres tres lent!!
Je cherche donc une autre solution mais je commence a me faire à l'idée que leOleContainer va etre dur a éviter...
Guillaume
|
|
jeudi 5 février 2004 à 19:22:23 |
Re : String et Retour chariot

FirSteph
|
Bon je voudrais d'abord signaler que je ne fais pas (encore) de Delphi, mais pour ce qui est de la difference entre le #13 et #13#10 c'est du au fait que ces deux retours chariots sont differents. Il en existe plusieurs types principalement répartis entre Unicode et Windows Native (chais plus c quoi le nom).
En fait quand tu fait un retour #13, tu dois surement faire un retour chariot Unicode que Windows native ne reconnait pas (donc Notepad), par contre Word reconnait car il supporte ce format. Par contre quand tu fais un retour #13#10 tu fais un retour WindowsNative qui est egalement compatible avec Unicode !
Voila en esperant avoir eclairci quelques points ;)
@ Bientot :)
FirSteph
|
|
Cette discussion est classée dans : string, chaine, retour, chariot, notepad
Répondre à ce message
Sujets en rapport avec ce message
Help 2 ! Ajout de retour chariot ! [ par toto ]
Salut,Comment faire pour ajouter un retour chariot qd je veux dans un memo SVP ?MErci !toto
Retour chariot ! [ par nirousse ]
Comment je peux faire pour convertir des retours chariot (Un rectangle noir dans le NotePad) par un retour à la ligne (#13#10 je crois) dans un richéd
Insérer retour chariot [ par Roje ]
Voila, j'ai un fichier texte en entrée écrit sur une seule ligne. J'aimerais insérer un retour chariot tous les 10 caractères. Je suis sûr que c'est t
Integer et string [ par Programmeur1987 ]
Bonjour j'aimerais savoir si il y a moyen d'intégrer un integer dans une chaine de string.Example dans mon cas :VarChangePass : Integer;beginChangePas
Renverser une chaine de caractère [ par AMokers ]
Salut à tous !Voila je voudrais renverser une chaine de caractere, j'ai trouver ce script :function InverseStr(sDep : string) : string;varsFin : strin
Client FTP par ClientSocket et Retour Chariot, [ par Filipe35 ]
Comment faire un retour chariot dans une variable ?Exemple: ( \n dans PHP )Var:= 'Bob \n Henri \n Jack';ShowMessage (var); donneraBobHenriJackIl sembl
conversion bit en string [ par biloue ]
BonjourDans un programme je récupère une chaine de bit qui m'est envoyé par liaison UDP. Chaine composée de 0 et de 1.Je souhaiterai convertir cette c
Formatage d'un string [ par titiyo ]
bonjoursen fait jai un chaine de 10 espace et je veut rentre dedant toto sans augenter la taille de ma chaine resulta qui a comme longeur 10:chaine1 :
retour chariot sur dernière ligne d'un fichier [ par furax13 ]
bonjour,j'ai déclaré une variable FicCsvResultOptim de type textj'utilise les méthode AssignFile(FicCsvResultOptim, nomFichierRecuit); reset(FicCsv
Gerer le retour chariot dans un listbox [ par fred23 ]
Bonjour, Je n'ai pas tout à fait compris comment me servir de la listbox. Aussi, dans une listbox, je voudrais savoir s'il est possible de faire en so
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|