Serait-ce ceci ? Comment coller sous OpenOffice ?
Oups
désolé j'avais édité mon message pour le spécifier mais ça n'a pas pris ....mauvaise excuse je sais mais bon c'est vrai !!
Cl@udius : Oui c'est ça
Encore désolé et merci
Alcatîz : ajouté à la nouvelle FAQ, merci pour cette contribution
[QR]Comment ajouter un bouton dans un TStringGrid ?
voila vous avez un jolie bouton dans les cellules
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 //dans le formcreate MaStringGrid.DoubleBuffered := True; MaStringGrid.ControlStyle := StringGrid2.ControlStyle + [csClickEvents]; ... // dans le ondrawcell du stringGrid // la condition peut etre un numero de colonne ou de ligne if maCondition Then if (csClicked in (sender as TstringGrid).ControlState) Then DrawFrameControl((sender as TstringGrid).Canvas.Handle, Rect,DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_PUSHED ) else DrawFrameControl((sender as TstringGrid).Canvas.Handle, Rect, FC_BUTTON, DFCS_BUTTONPUSH )
@+ Phil
Alcatîz : QR ajoutée à la nouvelle FAQ, merci pour cette contribution
Sous Delphi 6
Je vous met déjà un petit programme inspiré par celui de Sub0:
Petite explication:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, mmSystem, StdCtrls; {mmSystem vous permet d'avoir accès aux fonctions de contrôle midi} {----------------------------------------------------------------} Type TForm1 = Class(TForm) Button1: TButton; Edit1: TEdit; Procedure FormCreate(Sender: TObject); Procedure FormDestroy(Sender: TObject); Procedure Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Procedure Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); End; const Hpc=$100; Hpdm=$10000; Var Form1: TForm1; MidiOut: hMidiOut; Implementation {----------------------------------------------------------------} {$R *.dfm} {----------------------------------------------------------------} Procedure TForm1.FormCreate(Sender: TObject); Var Res: DWORD; msg: String; Begin Res := midiOutOpen(@MidiOut, MIDI_MAPPER, Handle, 0, CALLBACK_WINDOW); //La partie qui est çi-dessous peut être omise. Mais vous donneras des indications en cas d'erreur If Res <> 0 Then Begin Case Res Of MMSYSERR_BADDEVICEID: msg := 'Device invalide'; MMSYSERR_ALLOCATED: msg := 'Erreur d''allocation mémoire'; MMSYSERR_NOMEM: msg := 'Pas assez de mémoire'; MIDIERR_NOMAP: msg := 'Midi mapper non trouvé'; MIDIERR_NODEVICE: msg := 'Device non trouvé'; Else msg := 'Erreur inconnue'; End; MessageBox(Form1.Handle, pChar(msg), 'Error', MB_OK); Close; End; //------------------------------------------------------------------------------------------------- End; {La procédure çi dessous vous permet d'arrêter tout événement midi à la sortie du programme} {rien ne vous empêche de vous faire un petit boutton Panic dans le programme à partir de ça, au cas ou un noteOff n'aie pas été détécté} Procedure TForm1.FormDestroy(Sender: TObject); Begin midiOutShortMsg(MidiOut, $00007BB0); midiOutClose(MidiOut); End; {----------------------------------------------------------------} Procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin midiOutShortMsg(MidiOut, ($7F*Hpdm)+($25*Hpc)+($99)); End; {----------------------------------------------------------------} Procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Begin midiOutShortMsg(MidiOut, ($7F*Hpdm)+($25*Hpc)+($89)); end; {----------------------------------------------------------------} End.
midiOutShortMsg(MidiOut, 007F2599) vous permet de jouer un click de métronome sur le canal 10 au volume 127
midiOutShortMsg(MidiOut, 007F2589)
Le volume c'est 7F en hexadécimal
Le click c'est 25
99 Le premier neuf veut dire jouer la note, le deuxieme 9 sur le canal 10
(car les canaux vont de 0 à 9).
Dans la deuxième phrase 8 veut dire qu'on arrête la note sur le même canal.
Vous remarquerez que j'ai omis les premiers octets (00) qui sont de toutes façon inutilisé.
En ce qui concerne l'écriture
midiOutShortMsg(MidiOut, ($7F*Hpdm)+($25*Hpc)+($99));
Je vous explique. Celà permet de modifier les valeurs à l'intérieur de la phrase.
Si j'utilise la variable 'Note' par exemple pour pouvoir jouer une note sur le canal 1,
j'écrirai
midiOutShortMsg(MidiOut, ($7F*Hpdm)+(Note*Hpc)+($80));
ou 'Hpdm' et 'Hpc' sont des constantes.
J'aurais pu écrire,
midiOutShortMsg(MidiOut, ($7F*$10000)+(Note*$100)+($80)); !
Si vous voulez interagir sur cette commande, vous pourrez écrire par exemple,
midiOutShortMsg(MidiOut, (Volume*$10000)+(Note*$100)+(8*$10)+Canal));
ou Volume, Note et Canal sont des variables évidemment.
Attention avec les procédures Button1MouseDown et up. Si vous faîtes un copier coller des procédures et que vous rajoutez le bouton après, ça ne marche pas. Aucun son ne sort. Du moins pas chez moi !
Enfin un fichier PDF ou vous trouverez tous ce qu'il vous faut.
http://www.oktopus.hu/imgs/MANAGED/H...cification.pdf
Alcatîz : intégré à la nouvelle FAQ Delphi, merci pour cette contribution
Le composant TForm dispose de ActiveControl, qui permet de savoir sur quel composant de la form est le focus.
Exemple :
Ça semble peut être "basique", mais j'ai pas mal cherché avant que l'on me présente cette astuce J'étais déjà à parcourir tout les composants et à tester si le focus était bien sur lui...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // renvoie le nom du composant sur lequel il y a le focus. ShowMessage(maForm.ActiveControl.name);
Alcatîz : ces deux QR ont été intégrées dans la nouvelle FAQ, merci pour la contribution
(QR) Delphi 2009, mettre une sélection multilignes en commentaire rapidement :
A l'aide de la souris ou du clavier, sélectionnez plusieurs ligne, ensuite appuyez sur CTRL+/
Ce raccourcis clavier permet de mettre la sélection en commentaire (ajout de // à chaque début de ligne).
Rappelez le raccourcis pour supprimer les commentaires.
Très utile.
(QR) Delphi 2009, générique, taille, type, nom du type des paramètres générique :
Avec Delphi 2009 et l'apparition des type générique (classe ou enregistrement) il faut bien sur pouvoir avoir des informations sur les types.
Delphi nous fournis donc quelques fonctions utiles par le biais de quelques unités :
Generics.Defaults, TypInfo, IntfInfo
Les fonctions :
SizeOf -> vous la connaissez surement, elle permet de récupérer la taille en octet d'un type, cette dernière est compatible avec les types générique.
TypeInfo -> permet de récupérer des informations sur le type (type entier, flottant, ordinal, enregistrement, classe, interface ...).
GetTypeData -> permet de récupérer des informations sur la donnée du type
(type byte, word, single, char, string, widechar ...)
GetTypeName -> permet de récupérer le nom du type (integer, byte, string ...)
Default -> mets la donnée à sa valeur nulle (zero, nil)
mise en place :
au moment de la déclaration de votre classe ou record générique vous pouvez imaginer cette déclaration :
voila pour l'interface, voyons l'implémentation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 type TGenericPoint<T> = record public X, Y : T; public function _Size: integer; // renvois la taille du type T function _Info: pTypeInfo; // renvois les infos du type T function _Data: pTypeData; // renvois les infos de la données du type T function _Name: string; // renvois le nom du type T procedure _Zero; // mets à zéro X et Y peu importe le type de T end; TSmallPoint = TGenericPoint<SmallInt>; TPoint = TGenericPoint<Integer>; TPointF = TGenericPoint<Single>; TBigPoint = TGenericPoint<Int64>; TBigPointF = TGenericPoint<Double>;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 function TGenericPoint<T>._Name: string; begin result := GetTypeName(TypeInfo(T)); end; function TGenericPoint<T>._Size: integer; begin result := SizeOf(T) shl 1; end; function TGenericPoint<T>._Info: pTypeInfo; begin result := pTypeInfo(TypeInfo(T)); end; function TGenericPoint<T>._Data: pTypeData; begin result := pTypeData(GetTypeData(_Info)); end; procedure TGenericPoint<T>._Zero; begin X := Default(T); Y := Default(T); end;
Voila pour le moment.
Alcatîz : intégré dans la nouvelle FAQ, merci pour cette contribution
(QR) Delphi 2007..2010 : facilitez la lecture des unités grâce à la directive $REGION
La direction $REGION introduite depuis Delphi 2007 (si pas d'erreur) permet de créer, comme son nom l'indique une region de code dans une unité. Facilitant ainsi la lecture, l'écriture de cette dernière.
très simple à utiliser :
Et une fois que les regions seront repliées, nous verront dans l'IDE ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 uses ... {$REGION 'Fonctions Mathematiques'} {$REGION 'Sinus +aide'}{ Sinus Donne la taille de vos sinus Parametres : Retour : }{$ENDREGION} function Sinus(const Acthoum: TKlenex): TBeurk; {$REGION 'Cosinus +aide'}{ Cosinus Donne la taille des sinus de votre colocataire, nécessite un colocataire. Parametres : Retour : }{$ENDREGION} function Cosinus(const Coloc: TColoc; const Atchoum: TKlenex): TBeurk; {$ENDREGION} implementation
replis des aides :
replis de toutes les regions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 uses ... {$REGION 'Fonctions Mathematiques'} [Sinus +aide] function Sinus(const Acthoum: TKlenex): TBeurk; [Cosinus +aide] function Cosinus(const Coloc: TColoc; const Atchoum: TKlenex): TBeurk; {$ENDREGION} implementation
Genial non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 uses ... [Fonctions mathematiques] implementation
Alcatîz : QR intégrée à la nouvelle FAQ, merci pour cette contribution
[QR]Comment exporter au format PDF sous Word ?
Voici un code d'exemple, il faut bien sur l'adapter selon votre projet.
La méthode ExportAsFixedFormat de word oblige a saisir les deux premier paramètres, les suivants étant optionels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 procedure SavePdf(const AFileName: String); var WdApp, WdDoc: Variant; FichierPDF: String; const WdExportFormat = 17; // wdExportFormatPDF WdExportOptimizeFor = 0; // wdExportOptimizeForPrint WdExportRange = 0; // wdExportAllDocument WdExportItem = 0; // wdExportDocumentContent WdExportCreateBookmarks = 0; // wdExportCreateNoBookmarks begin try WdApp := CreateOleObject('Word.Application'); if VarType(WdApp) <> VarDispatch then Abort; WdApp.Visible := False; WdApp.DisplayAlerts := wdAlertsNone; WdDoc := WdApp.Documents.Open(AFileName); // Change l'extension du nom du fichier en pdf FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []); WdDoc.ExportAsFixedFormat(FichierPDF, WdExportFormat, False, WdExportOptimizeFor, WdExportRange, 1, 1, WdExportItem, True, True, WdExportCreateBookmarks, True, True, False); WdApp.Quit; except on E: Exception do .... end; WdDoc := Unassigned; WdApp := Unassigned; end;
Je vous invite à lire la MSDN pour des infos détaillées sur chaque argument :
ExportAsFixedFormat(OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, Range, From, To, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr)
Ce code est fonctionnel sous Delphi version XE et les composants Word2000. Avec XE3, il existe une unité Word2010 qui contient les constantes citées ci-dessus.
Liens utiles :
http://msdn.microsoft.com/en-us/libr...ice.12%29.aspx
Alcatîz : QR intégrée à la nouvelle FAQ, merci pour cette contribution
[QR]Comment exporter au format PDF sous Excel ?
Voici un code d'exemple, il faut bien sur l'adapter selon votre projet.
La méthode ExportAsFixedFormat de Excel oblige a saisir les deux premier paramètres, les suivants étant optionels.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 procedure SavePdf(const AFileName: String); var XlApp, XlBook, XlSheet: Variant; FichierPDF: String; const XlFixedFormatType = $00000000; // xlTypePDF XlQuality = $00000000; // xlQualityStandard begin try XlApp := CreateOleObject('Excel.Application'); if VarType(XlApp) <> VarDispatch then Abort; XlApp.Visible := False; XlApp.DisplayAlerts := False; XlBook := XlApp.WorkBooks.Open(AFileName); XlSheet := XlBook.Sheets[1]; XlSheet.Activate; // Change l'extension du nom du fichier en pdf FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []); XlSheet.ExportAsFixedFormat(XlFixedFormatType, FichierPDF, XlQuality, True, False, 1, 1, False); XlApp.Quit; except on E: Exception do .... end; XlSheet := Unassigned; XlBook := Unassigned; XlApp := Unassigned; end;
Je vous invite à lire la MSDN pour des infos détaillées sur chaque argument :
ExportAsFixedFormat(Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr)
Ce code est fonctionnel sous Delphi version XE et les composants Excel2000. Avec XE3, il existe une unité Excel2010 qui contient les constantes citées ci-dessus.
Liens utiles :
http://msdn.microsoft.com/en-us/libr...ice.12%29.aspx
Alcatîz : QR intégrée à la nouvelle FAQ, merci pour cette contribution
[QR]Comment exporter au format PDF sous Writer ?
Voici un code d'exemple, il faut bien sur l'adapter selon votre projet.
Il existe deux méthode d'export sous open office
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 procedure SavePdf(const AFileName: String); var AApp, ADeskTop, AUno, ALocale, MyDoc, MyProp: Variant; FichierPDF: String; begin try AApp := CreateOleObject('com.sun.star.ServiceManager'); ADeskTop := CreateUnoService('com.sun.star.frame.Desktop'); AUno := CreateUnoService('com.sun.star.frame.DispatchHelper'); ALocale := CreateUnoService('com.sun.star.Lang.Locale'); MyDoc := ADesktop.LoadComponentFromURL('file:///' + StringReplace(AFileName , '\', '/',[rfReplaceAll]), '_default', 0, FileProp); // Change l'extension du nom du fichier en pdf FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []); // Propriété pour l'export MyProp := VarArrayCreate([0, 1], varVariant); MyProp[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[0].Name := 'URL'; MyProp[0].Value := 'file:///' + StringReplace(FichierPDF, '\', '/',[rfReplaceAll]); MyProp[1] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[1].Name := 'FilterName'; MyProp[1].Value := 'writer_pdf_Export'; AUno.executeDispatch(ADesktop.CurrentFrame, '.uno:ExportDirectToPDF', '', 0, MyProp); MyDoc.Close(True); ADeskTop.Terminate; except on E: Exception do .... end; MyDoc := Unassigned; AApp := Unassigned; end;
- ExportToPDF
- ExportDirectToPDF
Les deux aboutissent au même résultat mais la première affiche la fenêtre d'options d'exportation de PDF alors que la seconde "exporte directement".
Il est toutefois possible de spécifier des valeurs, qui sont présentes dans la fenêtre d'options, en créant une propriété FilterData.
Dans ce cas, il faudra modifier le code pour :
Je vous invite à lire la documentation officielle pour des infos détaillées sur chaque argument dans les sections "PDF Export filter data" et "Filter data demo".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 MyProp := VarArrayCreate([0, 2], varVariant); MyProp[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[0].Name := 'URL'; MyProp[0].Value := 'file:///' + StringReplace(FichierPDF, '\', '/',[rfReplaceAll]); MyProp[1] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[1].Name := 'FilterName'; MyProp[1].Value := 'writer_pdf_Export'; // Créer autant de propriété que voulue mais penser a changer la taille du tableau MyFilterData := VarArrayCreate([0, 0], varVariant); MyFilterData[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyFilterData[0].Name := 'DisplayPDFDocumentTitle'; MyFilterData[0].Value := True; MyProp[2].Name := 'FilterData'; MyProp[2].Value := MyFilterData;
Ce code est fonctionnel sous Delphi version XE, openOffice 3.4.1 et LibreOffice 4.0
Liens utiles :
http://wiki.openoffice.org/wiki/API/...als/PDF_export
Alcatîz : QR intégrée à la nouvelle FAQ, merci pour cette contribution
[QR]Comment exporter au format PDF sous Calc?
Voici un code d'exemple, il faut bien sur l'adapter selon votre projet.
Il existe deux méthode d'export sous open office
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 procedure SavePdf(const AFileName: String); var AApp, ADeskTop, AUno, ALocale, MySheet, MyBook, MyProp: Variant; FichierPDF: String; begin try AApp := CreateOleObject('com.sun.star.ServiceManager'); ADeskTop := CreateUnoService('com.sun.star.frame.Desktop'); AUno := CreateUnoService('com.sun.star.frame.DispatchHelper'); ALocale := CreateUnoService('com.sun.star.Lang.Locale'); MyBook := ADesktop.LoadComponentFromURL('file:///' + StringReplace(AFileName , '\', '/',[rfReplaceAll]), '_default', 0, FileProp); // Activer la première feuille MySheet := MyBook.getSheets.getByIndex(0); MyBook.getCurrentController.setActiveSheet(MySheet); // Change l'extension du nom du fichier en pdf FichierPDF := StringReplace(AFileName, ExtractFileExt(AFileName), '.pdf', []); // Propriété pour l'export MyProp := VarArrayCreate([0, 1], varVariant); MyProp[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[0].Name := 'URL'; MyProp[0].Value := 'file:///' + StringReplace(FichierPDF , '\', '/',[rfReplaceAll]); MyProp[1] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[1].Name := 'FilterName'; MyProp[1].Value := 'calc_pdf_Export'; AUno.executeDispatch(ADesktop.CurrentFrame, '.uno:ExportDirectToPDF', '', 0, MyProp); MyBook.Close(True); ADeskTop.Terminate; except on E: Exception do .... end; MySheet := Unassigned; MyBook := Unassigned; AApp := Unassigned; end;
- ExportToPDF
- ExportDirectToPDF
Les deux aboutissent au même résultat mais la première affiche la fenêtre d'options d'exportation de PDF alors que la seconde "exporte directement".
Il est toutefois possible de spécifier des valeurs, qui sont présentes dans la fenêtre d'options, en créant une propriété FilterData.
Dans ce cas, il faudra modifier le code pour :
Je vous invite à lire la documentation officielle pour des infos détaillées sur chaque argument dans les sections "PDF Export filter data" et "Filter data demo".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 MyProp := VarArrayCreate([0, 2], varVariant); MyProp[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[0].Name := 'URL'; MyProp[0].Value := 'file:///' + StringReplace(FichierPDF , '\', '/',[rfReplaceAll]); MyProp[1] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyProp[1].Name := 'FilterName'; MyProp[1].Value := 'writer_pdf_Export'; // Créer autant de propriété que voulue mais penser a changer la taille du tableau MyFilterData := VarArrayCreate([0, 0], varVariant); MyFilterData[0] := AApp.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); MyFilterData[0].Name := 'DisplayPDFDocumentTitle'; MyFilterData[0].Value := True; MyProp[2].Name := 'FilterData'; MyProp[2].Value := MyFilterData;
Ce code est fonctionnel sous Delphi version XE, openOffice 3.4.1 et LibreOffice 4.0
Liens utiles :
http://wiki.openoffice.org/wiki/API/...als/PDF_export
est-ce que peut-on avoir une version hors-ligne de la Faq ?
Bonjour
je vous propose d'ajouter le texte ci dessous à la QR Comment lister les fichiers d'un répertoire
Pour lister les fichier d'un répertoire il suffit d'utiliser TDirectory qui est déclaré dans l'unité System.IOUtils de la rtl.
Exemple liste tous les fichiers appartenant au répertoire d:\monrepertoire commençant par nav_ et ayant pour extension .xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var Fichiers: TArray<string>; nomF: string; begin Fichiers := TDirectory.GetFiles('d:\monrepertoire','nav_*.xml'); for nomF in Fichiers do begin .........//traitement des fichiers end;
A ajouter aussi le liens ci dessous dans les références
http://docwiki.embarcadero.com/Libra...System.IOUtils
Je suis mitigé, cela dépend de la version de Delphi utilisé, n'oublions pas qu'il y a encore de nombreux utilisateurs de D7 (et même D6)
il faut donc avant tout retrouver la version d'origine (je suis remonté jusqu'à D2010, je gagerai que cela date de D2009 et l'apparition de l'unicode sans toutefois apporter une certitude) donc il faudrait écrire cet avertissement.
De plus dans ce cas de figure, certaines autres FAQ pourraient aussi bénéficier d'un addenda exemple : pour obtenir les répertoires spéciaux, toujours dans l'unité IOUtils mais pas les même versions TPath.getpublicpath etc...
Je comprends ce point de vue. Cependant il faudrait quand même moderniser un peu la FAQ car même s'il y a toujours des utilisateurs de vieilles versions il y en a pas mal de nouvelles.
Préciser que cette fonctionnalité est disponible qu'à partir de la version 9 ne présente pour moi aucun inconvénient
Alors je suggère ceci
étant donné que je dois pouvoir modifier cette FAQ, je suis prêt à le faire si validée
A partir des versions qui proposent l'unité IOUtils ou des versions proposant System.IOUtils (XE+)
Pour lister les fichier d'un répertoire il suffit d'utiliser TDirectory qui est déclaré dans cette unité de la rtl.
Exemple liste tous les fichiers appartenant au répertoire d:\monrepertoire commençant par nav_ et ayant pour extension .xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var Fichiers: TArray<string>; nomF: string; begin Fichiers := TDirectory.GetFiles('d:\monrepertoire','nav_*.xml'); for nomF in Fichiers do begin .........//traitement des fichiers end;
Rapprochez-vous de la documentation de votre version pour d'autres informations sur cette unité évoluant régulièrement
http://docwiki.embarcadero.com/Libra...vious_Versions
Ca me va parfaitement
Partager