OBS/Makros und Scripting/Allgemeines/Klassen/Importdatei/TxImportFileCSV: Unterschied zwischen den Versionen
Böhrer (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „When they get approved to borrow money and rehearse your referral code, we offer you $100. But, it definitely doesn't imply individuals with no credit rating…“) |
Nimz (Diskussion | Beiträge) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Makros und Scripting}} | |||
Die Klasse '''TxImportFileCSV''' ist speziell zum Import von CSV-Dateien vorgesehen und unterstützt auch den Import von CSV mit mehrzeiligen Texten, sofern diese mit entsprechenden Anführungszeichen versehen sind. CSV-Dateien mit einem Datensatz pro Zeilen können theoretisch auch mit [[OBS/Makros_und_Scripting/Allgemeines/Klassen/Importdatei/TxImportFile|TxImportFile]] importiert werden. | |||
=Struktur= | |||
==Methoden== | |||
===Create=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
constructor Create(); | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Erstellt eine Instanz für das Objekt TxImportFileCSV.<br /> | |||
<br /> | |||
Beispiel: | |||
<syntaxhighlight lang="Delphi"> | |||
oDatei := TxImportFileCSV.Create(); | |||
</syntaxhighlight> | |||
===LoadFromFile=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
function LoadFromFile(const FileName : string; const FileDelim : Char = ';'; const FileQuote : Char = '"'): boolean; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Die Methode erwartet zwingend einen gültigen Dateipfad im ersten Parameter. Der Inhalt der Datei wird eingelesen. Auf die Daten kann mit der Property [[#Cell|Cell]] zugegriffen werden. Optional können Feldtrenner (Standard ''';''') und Anführungszeichen (Standard '''"''') für die Texterkennung angegeben werden. | |||
<br /> | |||
Beispiel: | |||
if (oDatei.LoadFromFile(cPfad)) then begin | |||
Meldung('Datei konnte gelesen werden'); | |||
end; | |||
==Properties== | |||
===Cell=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
property Cell[Row, Col : Integer] : string read GetCell write SetCell; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Diese Property ermöglicht den Zugriff auf die Daten, die mit [[#LoadFromFile|LoadFromFile]] eingelesen wurden. Die Logik ist vergleichbar mit einem Tabellenkalkulationsprogramm wie Excel oder LibreCalc. Möchten Sie den Wert einer Zelle erhalten geben Sie der Property die Koordinaten der Zelle mit. Anders als bei den Programmen jedoch nicht mit Buchstabe und Zahl sondern mit zwei Zahlen. Auch ist hier die Reihenfolge zuerst ''Zeile'' und danach ''Spalte''. | |||
{{Achtung|Bei Dateien mit Umbrüchen in Texten gilt hier '''nicht''' Zeile in der Datei enspricht Zeile im Objekt! Die jeweils erste Zeile und Spalte startet bei 0. Außerdem kommt es bei mehrzeiligem Inhalt zu einer "Verschiebung" zwischen Datei und Objekt.<br /><br />Beispiel: | |||
1 "Artikelnummer";"Name";"Beschreibung" | |||
2 "MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" | |||
3 "I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen | |||
4 und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. | |||
5 Unterstützt DDR4-2666 RAM bis 128 GB." | |||
6 "PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt" | |||
Diese "Datei" enthält Daten für drei Artikel. Die Daten sind aber über fünf Zeilen verteilt, weil die Beschreibung für den zweiten Artikel über drei Zeilen verläuft. Beginnend mit der Zählung bei 0 erhält man die Artikelnummer für den dritten Artikel also nicht aus ''.Cell[5,0]'' sondern mit ''.Cell[3,0]''. | |||
}} | |||
===Rows=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
property Rows : Integer read GetRows; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Gibt die Anzahl der Zeilen für die Datei aus.<br /> | |||
<br /> | |||
Beispiel: | |||
<syntaxhighlight lang="Delphi"> | |||
procedure ImportiereDatei(HatSpaltennamen: boolean); | |||
var nStart : integer; | |||
i : integer; | |||
begin | |||
nStart := 0; | |||
if (HatSpaltennamen) then begin | |||
nStart := 1; | |||
end; | |||
for i := nStart to oDatei.Rows-1 do begin | |||
ImportZeile(i); | |||
end; | |||
end; | |||
</syntaxhighlight> | |||
Für eine Datei mit folgenden Aufbau wäre die Rückgabe ''4'': | |||
"Artikelnummer";"Name";"Beschreibung" | |||
"MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" | |||
"I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen | |||
und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. | |||
Unterstützt DDR4-2666 RAM bis 128 GB." | |||
"PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt" | |||
===Cols=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
property Cols : Integer read GetCols; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Gibt die Anzahl der Spalten für die Datei aus.<br /> | |||
<br /> | |||
Beispiel: | |||
<syntaxhighlight lang="Delphi"> | |||
const | |||
C_NR = 0; | |||
C_NAME = 1; | |||
C_BESCHR = 2; | |||
procedure ImportZeile(nZeile: integer); | |||
begin | |||
if (oDatei.Cols = 3) then begin | |||
SchreibeArtikel( | |||
oDatei.Cell[nZeile,C_NR], | |||
oDatei.Cell[nZeile,C_NAME], | |||
oDatei.Cell[nZeile,C_BESCHR] | |||
); | |||
end; | |||
end; | |||
</syntaxhighlight> | |||
Für eine Datei mit folgenden Aufbau wäre die Rückgabe ''3'': | |||
"Artikelnummer";"Name";"Beschreibung" | |||
"MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" | |||
"I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen | |||
und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. | |||
Unterstützt DDR4-2666 RAM bis 128 GB." | |||
"PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt" | |||
===Delim=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
property Delim : Char read FDelim write FDelim; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Beinhaltet das Trennzeichen für die Spalten. | |||
===Quote=== | |||
Definition: | |||
<syntaxhighlight lang="Delphi"> | |||
property Quote : Char read FQuote write FQuote; | |||
</syntaxhighlight> | |||
Erklärung:<br /> | |||
Beinhaltet das Anführungszeichen für die Texterkennung. | |||
=Beispiele= | |||
<syntaxhighlight lang="Delphi"> | |||
</syntaxhighlight> |
Aktuelle Version vom 11. April 2019, 12:12 Uhr
Die Klasse TxImportFileCSV ist speziell zum Import von CSV-Dateien vorgesehen und unterstützt auch den Import von CSV mit mehrzeiligen Texten, sofern diese mit entsprechenden Anführungszeichen versehen sind. CSV-Dateien mit einem Datensatz pro Zeilen können theoretisch auch mit TxImportFile importiert werden.
Struktur
Methoden
Create
Definition:
constructor Create();
Erklärung:
Erstellt eine Instanz für das Objekt TxImportFileCSV.
Beispiel:
oDatei := TxImportFileCSV.Create();
LoadFromFile
Definition:
function LoadFromFile(const FileName : string; const FileDelim : Char = ';'; const FileQuote : Char = '"'): boolean;
Erklärung:
Die Methode erwartet zwingend einen gültigen Dateipfad im ersten Parameter. Der Inhalt der Datei wird eingelesen. Auf die Daten kann mit der Property Cell zugegriffen werden. Optional können Feldtrenner (Standard ;) und Anführungszeichen (Standard ") für die Texterkennung angegeben werden.
Beispiel:
if (oDatei.LoadFromFile(cPfad)) then begin
Meldung('Datei konnte gelesen werden');
end;
Properties
Cell
Definition:
property Cell[Row, Col : Integer] : string read GetCell write SetCell;
Erklärung:
Diese Property ermöglicht den Zugriff auf die Daten, die mit LoadFromFile eingelesen wurden. Die Logik ist vergleichbar mit einem Tabellenkalkulationsprogramm wie Excel oder LibreCalc. Möchten Sie den Wert einer Zelle erhalten geben Sie der Property die Koordinaten der Zelle mit. Anders als bei den Programmen jedoch nicht mit Buchstabe und Zahl sondern mit zwei Zahlen. Auch ist hier die Reihenfolge zuerst Zeile und danach Spalte.
Beispiel:
1 "Artikelnummer";"Name";"Beschreibung" 2 "MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" 3 "I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen 4 und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. 5 Unterstützt DDR4-2666 RAM bis 128 GB." 6 "PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt"
Diese "Datei" enthält Daten für drei Artikel. Die Daten sind aber über fünf Zeilen verteilt, weil die Beschreibung für den zweiten Artikel über drei Zeilen verläuft. Beginnend mit der Zählung bei 0 erhält man die Artikelnummer für den dritten Artikel also nicht aus .Cell[5,0] sondern mit .Cell[3,0].
Rows
Definition:
property Rows : Integer read GetRows;
Erklärung:
Gibt die Anzahl der Zeilen für die Datei aus.
Beispiel:
procedure ImportiereDatei(HatSpaltennamen: boolean);
var nStart : integer;
i : integer;
begin
nStart := 0;
if (HatSpaltennamen) then begin
nStart := 1;
end;
for i := nStart to oDatei.Rows-1 do begin
ImportZeile(i);
end;
end;
Für eine Datei mit folgenden Aufbau wäre die Rückgabe 4:
"Artikelnummer";"Name";"Beschreibung" "MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" "I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. Unterstützt DDR4-2666 RAM bis 128 GB." "PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt"
Cols
Definition:
property Cols : Integer read GetCols;
Erklärung:
Gibt die Anzahl der Spalten für die Datei aus.
Beispiel:
const
C_NR = 0;
C_NAME = 1;
C_BESCHR = 2;
procedure ImportZeile(nZeile: integer);
begin
if (oDatei.Cols = 3) then begin
SchreibeArtikel(
oDatei.Cell[nZeile,C_NR],
oDatei.Cell[nZeile,C_NAME],
oDatei.Cell[nZeile,C_BESCHR]
);
end;
end;
Für eine Datei mit folgenden Aufbau wäre die Rückgabe 3:
"Artikelnummer";"Name";"Beschreibung" "MR1000-10";"Marker 1000 (Rot)";"Marker in der Farbe Rot" "I7-9700K";"Intel Prozessor i7-9700K";"Leistungsstarker Prozessor mit 8 Kernen und einem Basistakt von 3,60 GHz. Der Takt kann auf 4,90 GHz erhöht werden. Unterstützt DDR4-2666 RAM bis 128 GB." "PK3000-KX500";"Papierkassette KX500 für Modell 3000";"Papierkapazität bis zu 530 Blatt"
Delim
Definition:
property Delim : Char read FDelim write FDelim;
Erklärung:
Beinhaltet das Trennzeichen für die Spalten.
Quote
Definition:
property Quote : Char read FQuote write FQuote;
Erklärung:
Beinhaltet das Anführungszeichen für die Texterkennung.