OBS/Makros und Scripting/Allgemeines/Übersicht Prozeduren: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 35: Zeile 35:
</syntaxhighlight>
</syntaxhighlight>
Zeigt nacheinander folgende Meldungen:<br />
Zeigt nacheinander folgende Meldungen:<br />
[[Image:ProcMeldung_Bsp1.jpg]]
[[Image:ProcMeldungBsp1.jpg]]
[[Image:ProcMeldung_Bsp2.jpg]]
[[Image:ProcMeldungBsp2.jpg]]
[[Image:ProcMeldung_Bsp3.jpg]]
[[Image:ProcMeldungBsp3.jpg]]
 
==FindFile==
Definition:
<syntaxhighlight lang="Delphi">
procedure FindFile(RootFolder: string; Mask: string; var Erg_StringList : TStringList; Recurse: Boolean = True);
</syntaxhighlight>
Erklärung:<br />
Erstellt eine Liste ''Erg_StringList'' aus Dateipfaden, deren Dateiname und Typ der Maske ''Mask'' enspricht, ausgehend vom Verzeichnis-Pfad ''RootFolder''. Wenn auch alle Unterverzeichnisse durchlaufen werden sollen, ist ''Recurse'' mit ''True'' ansonsten mit ''False'' zu übergeben.<br />
{{Hinweis|'''<nowiki>*</nowiki>''' ist ein Platzhalter für beliebige Zeichen. Um z. B. nur csv-Dateien zu selektieren, müsste die Maske den Wert "*.csv" erhalten. Für alle Dateien ist "*.*" zu verwenden.}}
siehe auch:
*[http://docwiki.embarcadero.com/Libraries/Rio/en/System.Classes.TStringList TStringList]<br />
<br />
<syntaxhighlight lang="Delphi">
function StartProc():Boolean;
var oDateiListe : TStringList;
    i          : integer;
begin
    //Erstellt eine Liste, in der die Dateien des Verzeichnisses aufgelistet werden können
    oDateiListe := TStringList.Create();
    //Schreibt alle im Verzeichnis enthaltenen Dateien mit der Dateiendung "csv" in die Liste
    FindFile('c:\csvDateien\','*.csv',oDateiListe,False);
    //Geht die Liste durch und importiert eine Datei nach der anderen
    for i:=0 to oDateiListe.Count-1 do begin
        ImportiereDatei(oDateiListe[i]);
    end;
    MyFreeAndNil(oDateiListe);
end;
</syntaxhighlight>

Version vom 12. April 2019, 09:57 Uhr


Hier finden Sie nützliche Prozeduren, die Sie in den Makros verwenden können, um das gewünschte Ergebnis zu erzielen.

Liste der Prozeduren

MyFreeAndNil

Definition:

procedure MyFreeAndNil(var Obj);

Erklärung:
Schließt die Instanz eines Objektes und gibt den reservierten Arbeitsspeicher wieder frei. Die Objekt-Variable wird dabei auf nil (Nullwert in Delphi/Pascal) gesetzt.

Beispiel:

oBeispiel := TObject.Create();
MyFreeAndNil(oBeispiel);
//oBeispiel ist jetzt nil

Meldung

Definition:

procedure Meldung(const cMessage: String; cTitle: String = ''; lShowIcon: Boolean = True; lErrorIcon: Boolean = False);

Erklärung:
Zeigt eine Meldung auf dem Bildschirm an. Dies kann z. B. als Rückmeldung am Ende eines Makros eingebaut werden, um dem Benutzer mitzuteilen, dass das Ende erreicht ist.

HINWEIS: Der Parameter lShowIcon hate hier keine weitere Verwendung und wird intern immer als "True" behandelt.


Beispiel:

function StartProc():Boolean;
begin
    Meldung('Hallo Welt!');
    Meldung('Hallo Welt!','Grüße');
    Meldung('Ups, da ist etwas falsch gelaufen.','Fehler',True,True);
end;

Zeigt nacheinander folgende Meldungen:
ProcMeldungBsp1.jpg ProcMeldungBsp2.jpg ProcMeldungBsp3.jpg

FindFile

Definition:

procedure FindFile(RootFolder: string; Mask: string; var Erg_StringList : TStringList; Recurse: Boolean = True);

Erklärung:
Erstellt eine Liste Erg_StringList aus Dateipfaden, deren Dateiname und Typ der Maske Mask enspricht, ausgehend vom Verzeichnis-Pfad RootFolder. Wenn auch alle Unterverzeichnisse durchlaufen werden sollen, ist Recurse mit True ansonsten mit False zu übergeben.

HINWEIS: * ist ein Platzhalter für beliebige Zeichen. Um z. B. nur csv-Dateien zu selektieren, müsste die Maske den Wert "*.csv" erhalten. Für alle Dateien ist "*.*" zu verwenden.

siehe auch:


function StartProc():Boolean;
var oDateiListe : TStringList;
    i           : integer;
begin
    //Erstellt eine Liste, in der die Dateien des Verzeichnisses aufgelistet werden können
    oDateiListe := TStringList.Create();
    //Schreibt alle im Verzeichnis enthaltenen Dateien mit der Dateiendung "csv" in die Liste
    FindFile('c:\csvDateien\','*.csv',oDateiListe,False);
    //Geht die Liste durch und importiert eine Datei nach der anderen
    for i:=0 to oDateiListe.Count-1 do begin
        ImportiereDatei(oDateiListe[i]);
    end;
    MyFreeAndNil(oDateiListe);
end;