GÉNÉRATEUR FICHIER DOC EN HTML

Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
- - Dernière réponse : f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
- 9 déc. 2012 à 00:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54778-generateur-fichier-doc-en-html

f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
Voila pour enregistrer en UTF-8 :

procedure SaveToUTF8(aStrings: TStrings; aFileName: string);
var
U8:AnsiString;
begin
with TFileStream.Create(aFileName, fmCreate) do
try
U8 := UTF8Encode(aStrings.Text);
Write(U8[1], Length(U8));
finally
Free;
end;
end;
f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26 -
#1120 : est-ce que le fichier HTML généré est bien en UTF-8 sans BOM ? (ou en OEM/ISO)

#1500 : il faut jouer avec Close et CloseQuery, peut être voir améliorer la gestion de la sauvegarde.

#1160 : dans le but de standardiser et de réduire les dépendances à Systus, n'oublie pas que même si la finalité c'est l'outils en lui même, le code source doit pouvoir être analyser/compiler par n'importe qui. J'ai tenter de supprimer un max d'appels à Systus mise à part 2 fonctions (CSV) le reste n'est pas vraiment justifié (INI, FRE, etc).

#1150 & #1160 :

Unit XXX;

interface

implementation

{ ... code ... }

initialization
{ executé en entrée de programme }

finalization
{ executé en sortie de programme, peut importe la sortie }

end.

#1100 & #1110 & #1170 : ok :)

#1130 : corriger comme cela alors :
function PremiereLigneFichier(const nomfichier:string; out aFirstLine: string): boolean;
begin
with TStringList.Create do
try
LoadFromFile(nomfichier);
result := Count > 0;
if result then
aFirstLine := Strings[0];
finally
Free;
end;
end;
dubois77
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10 -
f0xi : quelques questions pour affiner !

#1120 (accent)
je l'ai essayé : ça ne fonctionne pas :
j'ai remplacé par exemple "accent(champ); par "champ := escapeText(champ); et quand je lance le html créé j'ai que des "?"
à la compile, ne trouve pas "indent" : spécifique à genHLP ?
le seul que j'utilise est dans la proc ALIGNE et n'est donc pas concerné

#1150 (terminate)
Ne fonctionne pas car je me sers du close pour pouvoir sortir sans sauver avec le clic sur la croix (porte de secours pour mise à jour intempestive des fiches) :
le quitter normal sauve automatiquement

#1160 (objets globaux)
Cela veut-il dire que je n'ai pas le droit d'écrire : INI(L1)
et qu'il faut que l'écrive : L1 := TstringList.Create;
quelle différence ? dans la proc INI(L1), L1 est passé en VAR est fait (à priori) la même chose
idem pour FRE(L1)

par contre j'ai déjà adopté :
#1100 (historique)
#1110 (versions)
#1130 (systus) : j'ai fait un fonction :
//------------------------------------------- Foxy#1130
function PremiereLigneFichier(nomfichier:string):string;
begin
with TStringList.Create do
try
LoadFromFile(nomfichier);
result := Strings[0];
finally
Free;
end;
end;
#1170 : (propriétés Form1)
dubois77
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10 -
#1200 : effectivement j'ai regardé il y a effectivement un problème lorsque l'on fait Control V directement sur les 3 étoiles surlignées : ça coupe les lignes à la taille de la fenêtre
il faut que je voie cela
dubois77
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10 -
Merci Foxy
un peu de lecture, d'accord, mais beaucoup de travail !
bien il y a certains points que je vais pouvoir adopter de suite (#110,#1110,#1120,#1140,1150,#1170,#1180,{1190)
certains points me posent (encore) quelques soucis :
#1150 et #1160 : je ne vois pas (pour l'instant) à quel endroit je dois mettre "initialization" et "finalization" ; mais je vais trouver.
#1170 : ce défaut vient du fait que lorsque je programme (sur un portable) j'aime bien avoir accès rapidement à l'unit, l'inspecteur d'objets ...) donc je réduis la fenêtre principale et je l'adapte au projet à l'exe ! c'est pas bien donc je vais améliorer
#1180 (opendialog) j'ai été amené à utiliser dirappli, dirparam (maison) car sans cela, je me retrouve souvent à l'ouverture du dialog un peu n'importe ou (ou je suis allé par exemple dans une autre appli ouverte précédemment) donc je me suis dit "il faut forcer, c'est moi qui commande"
il semblerait que ce ne soit pas la bonne manière, je vais voir comment faire
(sympa d'avoir pris tant de temps dans ce commentaire "constructif")