Unit CSVFile

Beschreibung

 

Uses

Übersicht

Klassen, Interfaces und Objects

Name Beschreibung
Record TCellChange  
Klasse TCellData  
Klasse TCSVFile  
Record TCSVPos  
Klasse TFrontend_Output_Base  

Funktionen und Prozeduren

function Calc_Average(const Values: TArray<String>): Double;
function Calc_Count(const Values: TArray<String>): Integer;
function Calc_IQR(const Values: TArray<Double>): Double;
function Calc_Max(const Values: TArray<String>; var Pos: TCSVPos): Double;
function Calc_Median(const Values: TArray<Double>): Double;
function Calc_Min(const Values: TArray<String>; var Pos: TCSVPos): Double;
function Calc_Mode(const Values: TArray<Double>): Double;
function Calc_Product(const Values: TArray<String>): Double;
function Calc_Quartiles(const Values: TArray<Double>): TArray<Double>;
function Calc_Range(const Values: TArray<Double>): Double;
function Calc_StandardDeviation(const Values: TArray<String>): Double;
function Calc_Sum(const Values: TArray<String>): Double;
function Calc_Variance(const Values: TArray<String>): Double;
function ConvertStringArrayToDoubleArray(const Values: TArray<String>): TArray<Double>;
function EncodingToString(Encoding: TEncoding): string;
function FormatMilliseconds(Milliseconds: Integer; IncludingIdentifier: Boolean = True; Identifiers: String = 'Sekunden|Minuten'): string;
function GenerateRandomID(Length: Integer): String;
function GetCSVFileSize(Filename: String): Integer;
function NormalizeDecimalSeparator(const Value: String; UseWindowsSettings: Boolean = True): String;
function ReadFileContent(Filename: String; MaxBytes: Integer): string;
function RemoveSurroundingQuotes(const AField: string;FQuotes:Char): string;

Datentypen

TCalculationType = (...);
TCSVDataType = (...);
TCSVHorizontalAlignment = (...);
TCSVSortDirection = (...);
TCSVVerticalAlignment = (...);
TLineBreakStyle = (...);
TOnAfterReadRow = procedure(RowIndex: Integer) of object;
TOnBeforeReadCell = procedure(RowIndex, ColIndex: Integer; var Value: String) of object;
TOnBeforeReadRow = procedure(RowIndex: Integer) of object;
TOnFoundEvent = procedure(Sender: TObject; Position: TCSVPos; Value: String) of object;
TProgressEvent = procedure(Sender: TObject; ProcessedKB, MaxKB: Integer; Percent: Double) of object;

Beschreibung

Funktionen und Prozeduren

function Calc_Average(const Values: TArray<String>): Double;

Funktion zur Berechnung des Durchschnitts (Mittelwert) der Werte im Array
Der Durchschnitt ist der Mittelwert aller Zahlen im Array.
Er wird berechnet, indem die Summe aller Werte durch die Anzahl der Werte im Array geteilt wird.

Anwendungsbeispiel:
- Bei der Analyse von Testergebnissen: Der Durchschnitt kann verwendet werden, um den Mittelwert der Schülerbewertungen in einer Prüfung zu berechnen.
- Bei der Berechnung des Durchschnittsgewinns: Wenn du den durchschnittlichen Gewinn eines Unternehmens über mehrere Jahre hinweg berechnen möchtest, kannst du diese Funktion verwenden.
- Bei der Analyse von Produktpreisen: Wenn du den Durchschnittspreis von Produkten berechnen möchtest, die auf einer Website verkauft werden, hilft dir diese Funktion, die mittleren Preise zu berechnen.

function Calc_Count(const Values: TArray<String>): Integer;

Funktion zur Berechnung der Anzahl der Werte im Array
Diese Funktion zählt die Anzahl der Elemente im Array, die nicht leer sind.
Leere Strings werden hierbei ignoriert.

Anwendungsbeispiel:
- Bei der Analyse von Umfragedaten: Wenn du die Anzahl der Antworten ermitteln möchtest, die in einem Umfragedatensatz ausgefüllt wurden (ohne leere Einträge zu berücksichtigen), kannst du diese Funktion verwenden.
- Bei der Berechnung der Teilnehmerzahl in einer Veranstaltung: Wenn du wissen möchtest, wie viele Personen eine Veranstaltung besucht haben (ohne leere Einträge zu zählen), nutzt du diese Funktion.
- Bei der Verarbeitung von Logdaten: Wenn du die Anzahl der Ereignisse oder Fehlerprotokolle ermitteln möchtest, kannst du diese Funktion verwenden, um nur die gefüllten Datensätze zu zählen und leere Logeinträge zu ignorieren.

function Calc_IQR(const Values: TArray<Double>): Double;

Funktion zur Berechnung des Interquartilsabstands (IQR)
Der IQR ist die Differenz zwischen dem dritten (Q3) und dem ersten Quartil (Q1).
Der IQR misst die Streuung der mittleren 50% der Daten.
Der Interquartilsabstand hilft dabei, Ausreißer zu erkennen, da Werte außerhalb des IQR oft als Ausreißer betrachtet werden.
- Ein hoher IQR deutet auf eine große Streuung der mittleren 50% der Werte hin.
- Ein niedriger IQR deutet auf eine geringe Streuung der mittleren 50% der Werte hin.
Anwendungsbeispiel:
Bei einer Analyse von Prüfungsnoten: Wenn die Noten stark variieren, ist der IQR groß, was auf eine größere Streuung der mittleren 50% der Noten hinweist.
Bei einer Analyse von Gehältern in einer Firma: Ein kleiner IQR könnte darauf hindeuten, dass die mittleren 50% der Gehälter sehr ähnlich sind, während ein großer IQR auf eine größere Gehaltsdifferenz hindeutet.

function Calc_Max(const Values: TArray<String>; var Pos: TCSVPos): Double;

Funktion zur Berechnung des maximalen Werts im Array und zur Rückgabe der Position des Maximalwerts
Der maximale Wert ist der größte Wert im Array.
Die Position (Index) des Maximalwerts im Array wird ebenfalls zurückgegeben, um die genaue Lage des größten Werts im Array zu ermitteln.

Anwendungsbeispiel:
- Bei der Analyse von Verkaufszahlen: Wenn du den höchsten Umsatz in einer Liste von Verkäufen herausfinden möchtest, kannst du diese Funktion verwenden, um den **Maximalwert (z.B. höchster Umsatz)** sowie den **Tag (Position)** zu ermitteln, an dem dieser Umsatz erzielt wurde.
- Bei der Bestimmung des besten Ergebnisses in einem Test: Wenn du den **besten** Testergebnis (z.B. die höchste Punktzahl) und die Position (z.B. den Schüler) finden möchtest, kannst du diese Funktion verwenden, um das **höchste Ergebnis** und dessen **Position** zu ermitteln.
- In der Analyse von Aktienkursen: Wenn du den **höchsten** Kurs innerhalb einer bestimmten Periode ermitteln möchtest, liefert dir diese Funktion den **maximalen Kurs** und den **Index (Tag/Zeitraum)**, an dem dieser Preis erreicht wurde.

function Calc_Median(const Values: TArray<Double>): Double;

Funktion zur Berechnung des Median
Der Median ist der mittlere Wert eines Datensatzes, wenn er der Größe nach sortiert ist.
- Bei einer ungeraden Anzahl von Werten ist der Median der mittlere Wert.
- Bei einer geraden Anzahl von Werten ist der Median der Durchschnitt der beiden mittleren Werte.
Der Median ist robust gegenüber Ausreißern, da er nur die mittlere Position berücksichtigt und nicht die tatsächlichen Werte.

Anwendungsbeispiel:
Bei einer Analyse von Gehältern: Wenn du die Gehälter von Mitarbeitern hast, könnte der Median den Wert darstellen, bei dem die Hälfte der Mitarbeiter mehr und die andere Hälfte weniger verdient.
In einer Analyse von Umfrageergebnissen zur Zufriedenheit: Wenn 50% der Umfrageteilnehmer zufrieden sind, wäre der Median der Wert, bei dem genau die Hälfte der Befragten eine höhere und die andere Hälfte eine niedrigere Bewertung abgegeben hat.
Der Median ist besonders nützlich, wenn der Datensatz Ausreißer enthält, die den Durchschnitt verzerren könnten.

function Calc_Min(const Values: TArray<String>; var Pos: TCSVPos): Double;

Funktion zur Berechnung des minimalen Werts im Array und zur Rückgabe der Position des Minimalwerts
Der minimale Wert ist der kleinste Wert im Array.
Die Position (Index) des Minimalwerts im Array wird ebenfalls zurückgegeben, um die genaue Lage des kleinsten Werts im Array zu ermitteln.

Anwendungsbeispiel:
- Bei der Analyse von Temperaturen: Wenn du die niedrigste Temperatur in einem Datensatz suchst und wissen möchtest, an welchem Tag diese gemessen wurde, kannst du diese Funktion verwenden, um den **Minimalwert (z.B. die tiefste Temperatur)** sowie den **Tag (Position)** zu ermitteln.
- Bei der Bestimmung des günstigsten Preises: Wenn du die **günstigste** Preisoption in einer Liste von Produkten ermitteln möchtest, kannst du den minimalen Preis und dessen Position (Produktname oder Index) mit dieser Funktion herausfinden.
- In der mathematischen Optimierung: Wenn du den **kleinsten** Wert einer bestimmten Reihe von Messdaten ermitteln möchtest, um etwa den **besten Wert** für eine Optimierungsformel zu verwenden.

function Calc_Mode(const Values: TArray<Double>): Double;

Funktion zur Berechnung des Modus (Mode)
Der Modus ist der Wert, der im Datensatz am häufigsten vorkommt.
Ein Datensatz kann keinen Modus, einen Modus oder mehrere Modi haben.
- Wenn mehrere Werte die gleiche maximale Häufigkeit haben, wird NaN zurückgegeben, um darauf hinzuweisen, dass es keinen eindeutigen Modus gibt.
Anwendungsbeispiel:
Bei einer Analyse von Produktbewertungen: Wenn man die Bewertung "5" am häufigsten sieht, ist 5 der Modus.
Bei einer Analyse von Prüfungsnoten: Wenn die Note "1" am häufigsten vorkommt, ist 1 der Modus.
Wenn mehrere Werte die gleiche Häufigkeit haben (z.B. 3 und 5 in einem Datensatz), wird NaN zurückgegeben, um zu kennzeichnen, dass es keinen eindeutigen Modus gibt.

function Calc_Product(const Values: TArray<String>): Double;

Funktion zur Berechnung des Produkts der Werte im Array
Das Produkt ist das Ergebnis der Multiplikation aller Werte im Array.
Wenn das Array leere oder ungültige Werte enthält, die keine Zahlen sind, werden diese ignoriert.

Anwendungsbeispiel:
- Bei der Berechnung des Gesamtgewichts eines Pakets: Wenn du das Gewicht jedes Teils des Pakets hast, kannst du das **Gesamtgewicht** berechnen, indem du die Einzelgewichte miteinander multiplizierst.
- Bei der Berechnung des Endpreises eines Produkts, wenn Rabatte in Form von Multiplikatoren gegeben sind: Zum Beispiel, wenn ein Produkt mit einem Rabattfaktor von 0,8 verkauft wird, multiplizierst du den Preis mit 0,8, um den Endpreis zu berechnen.
- In der Physik bei der Berechnung von Widerstand in einem parallelen Schaltkreis: Das Produkt von Widerstandswerten kann in bestimmten Formeln verwendet werden, um den Gesamtwiderstand zu ermitteln.
- Bei der Berechnung der kumulierten Wachstumsrate in der Finanzmathematik: Wenn du mehrere Wachstumsraten über Zeiträume hinweg hast, kannst du das Produkt dieser Raten verwenden, um den Gesamtwachstumsfaktor zu ermitteln.

function Calc_Quartiles(const Values: TArray<Double>): TArray<Double>;

Funktion zur Berechnung der Quartile (Q1, Median, Q3)
Quartile teilen den Datensatz in vier gleich große Teile.
- Q1 (erstes Quartil) ist der Median der unteren Hälfte der Daten (25% der Werte liegen darunter).
- Q2 (zweites Quartil) ist der Median des gesamten Datensatzes (50% der Werte liegen darunter).
- Q3 (drittes Quartil) ist der Median der oberen Hälfte der Daten (75% der Werte liegen darunter).
Der Interquartilsabstand (IQR) ist die Differenz zwischen Q3 und Q1.
Er gibt an, wie weit die mittleren 50% der Werte auseinander liegen.

Anwendungsbeispiel:
Bei einer Analyse von Gehältern: Q1 zeigt die mittleren Gehälter der unteren 25 % der Mitarbeiter, der Median (Q2) gibt den "durchschnittlichen" Gehaltswert an, und Q3 zeigt die mittleren Gehälter der oberen 25 %.
Ein hoher Unterschied zwischen Q1 und Q3 (großer IQR) deutet auf eine größere Spreizung der Gehälter hin, während ein kleiner Unterschied auf eine geringere Gehaltsdifferenz hindeutet.
In einer Analyse von Prüfungsergebnissen zeigt Q1 die untersten 25% der Noten, Q2 den Median (also den mittleren Wert), und Q3 zeigt die oberen 25% der Noten.

function Calc_Range(const Values: TArray<Double>): Double;

Funktion zur Berechnung der Spannweite (Range)
Die Spannweite ist die Differenz zwischen dem größten und dem kleinsten Wert im Datensatz.
Sie zeigt die gesamte Streuung der Daten, berücksichtigt jedoch nicht die Verteilung der Werte.
Eine große Spannweite deutet darauf hin, dass die Daten weit auseinander liegen, während eine kleine Spannweite auf eine enge Streuung hinweist.

Anwendungsbeispiel:
Bei einer Analyse von Temperaturen: Wenn die höchste Temperatur 30°C und die niedrigste Temperatur 10°C beträgt, ist die Spannweite 20°C.
In einer Analyse von Prüfungsergebnissen: Wenn die besten Noten 1,0 und die schlechtesten Noten 5,0 sind, beträgt die Spannweite 4,0.
Die Spannweite kann hilfreich sein, um einen ersten Überblick über die Streuung der Daten zu bekommen, ist jedoch weniger genau als z.B. der Interquartilsabstand (IQR), da sie nur die Extremwerte berücksichtigt.

function Calc_StandardDeviation(const Values: TArray<String>): Double;

Funktion zur Berechnung der Standardabweichung
Die Standardabweichung ist die Quadratwurzel der Varianz und gibt die durchschnittliche Abweichung der Werte vom Mittelwert an.
Sie ist ein Maß für die Streuung der Daten und hilft zu verstehen, wie stark die Werte um den Durchschnitt schwanken.
Eine kleinere Standardabweichung zeigt an, dass die Werte nahe am Mittelwert liegen, während eine größere Standardabweichung auf eine größere Streuung der Daten hinweist.

Anwendungsbeispiel:
- Bei der Analyse von Schülernoten: Eine geringe Standardabweichung zeigt, dass die meisten Schüler ähnliche Noten haben, während eine hohe Standardabweichung auf eine größere Variation in den Noten hinweist.
- Bei der Berechnung von Aktienkursen: Eine niedrige Standardabweichung zeigt eine geringe Volatilität der Kurse, während eine hohe Standardabweichung eine größere Schwankungsbreite der Kurse anzeigt.
- Bei der Messung von Produktionsfehlern: Eine niedrige Standardabweichung zeigt an, dass die Fehlerquote konstant ist, während eine hohe Standardabweichung auf unregelmäßige Fehler in der Produktion hinweist.

function Calc_Sum(const Values: TArray<String>): Double;

Funktion zur Berechnung der Summe der Werte im Array
Die Summe ist das Ergebnis der Addition aller Werte im Array.
Wenn das Array leere oder ungültige Werte enthält, die keine Zahlen sind, werden diese ignoriert.

Anwendungsbeispiel:
- Bei der Analyse der Gesamtkosten eines Projekts: Die Summe der einzelnen Kostenpunkte ergibt die **Gesamtkosten** des Projekts.
- Bei der Berechnung der Gesamtzahl von verkauften Einheiten: Die Summe der Verkaufszahlen aus verschiedenen Regionen gibt die **Gesamtverkaufszahl** an.
- In einer Budgetübersicht: Wenn man die Ausgaben eines Monats summiert, erhält man die **Gesamtausgaben** für diesen Monat.
- Bei der Berechnung des Gesamtgehalts: Die Summe der einzelnen Gehälter der Mitarbeiter ergibt das **Gesamtgehalt** des Unternehmens.

function Calc_Variance(const Values: TArray<String>): Double;

Funktion zur Berechnung der Varianz
Die Varianz misst, wie weit die einzelnen Werte eines Datensatzes im Durchschnitt vom Mittelwert (Durchschnitt) entfernt sind.
Eine hohe Varianz bedeutet, dass die Werte weit vom Durchschnitt entfernt sind, während eine niedrige Varianz darauf hinweist, dass die Werte nahe beieinander liegen.
Die Varianz ist ein Maß für die **Streuung** der Daten. Sie hilft zu verstehen, wie stark die Werte variieren oder schwanken.

Anwendungsbeispiel:
- Bei der Analyse von Investitionsrenditen: Eine hohe Varianz zeigt, dass die Renditen stark schwanken, was auf eine größere Unsicherheit oder Risiko hindeutet. Eine niedrige Varianz zeigt stabile und gleichmäßige Renditen an.
- Bei der Qualitätskontrolle: Eine hohe Varianz in den Produktionsfehlern deutet darauf hin, dass die Fehlerquote stark variiert, während eine niedrige Varianz darauf hinweist, dass die Qualität konstant ist.
- Bei der Analyse von Schülernoten: Eine hohe Varianz bedeutet, dass die Noten weit auseinanderliegen (es gibt viele sehr gute und sehr schlechte Noten), während eine niedrige Varianz darauf hinweist, dass die Noten nahe beieinander liegen.

function ConvertStringArrayToDoubleArray(const Values: TArray<String>): TArray<Double>;

Funktion zur Konvertierung von TArray<String> in TArray<Double>
Diese Funktion versucht, jeden String im Array in einen Double-Wert zu konvertieren.
Falls die Konvertierung fehlschlägt, wird NaN zurückgegeben, um ungültige Daten zu kennzeichnen.

function EncodingToString(Encoding: TEncoding): string;
 
function FormatMilliseconds(Milliseconds: Integer; IncludingIdentifier: Boolean = True; Identifiers: String = 'Sekunden|Minuten'): string;
 
function GenerateRandomID(Length: Integer): String;

Funktion umd die ID der CSV-Daten zu generieren

function GetCSVFileSize(Filename: String): Integer;

Funktion umd die CSV Dateigröße zu ermitteln
Wir vor dem öffnen der CSV aufgerufen um eine 0-Datei festzustellen.
Das Parsen wird dann ignoriert.

function NormalizeDecimalSeparator(const Value: String; UseWindowsSettings: Boolean = True): String;

Normalisiert den Dezimaltrennzeichen für die gegebene Zahl

function ReadFileContent(Filename: String; MaxBytes: Integer): string;
 
function RemoveSurroundingQuotes(const AField: string;FQuotes:Char): string;

Entfernt umgebende Anführungszeichen von einem Feld

Datentypen

TCalculationType = (...);
 
Werte
  • ctAverage
  • ctCount
  • ctMax
  • ctMin
  • ctProduct
  • ctSum: Berechnungstypen: Durchschnitt, Anzahl, Maximalwert, Minimalwert, Produkt, Summe
TCSVDataType = (...);
 
Werte
  • dtCurrency
  • dtDate
  • dtDateTime
  • dtDouble
  • dtInteger
  • dtText: Datentypen: Währung, Datum, Datum/Zeit, Fließkommazahl, Ganzzahl, String
TCSVHorizontalAlignment = (...);

Horizontale Ausrichtung

Werte
  • haLeft
  • haCenter
  • haRight
TCSVSortDirection = (...);
 
Werte
  • sdCSVAscending
  • sdCSVDescending: Sortierrichtung für CSV: Aufsteigend oder Absteigend
TCSVVerticalAlignment = (...);

Vertikale Ausrichtung

Werte
  • vaTop
  • vaCenter
  • vaBottom
TLineBreakStyle = (...);
 
Werte
  • lbsMac
  • lbsNone
  • lbsUnix
  • lbsWindows: Zeilenumbruchstile: Mac, Keine, Unix, Windows
TOnAfterReadRow = procedure(RowIndex: Integer) of object;

Event, das nach dem Lesen einer Zeile ausgelöst wird

TOnBeforeReadCell = procedure(RowIndex, ColIndex: Integer; var Value: String) of object;

Event, das vor dem Lesen einer Zelle ausgelöst wird

TOnBeforeReadRow = procedure(RowIndex: Integer) of object;

Event, das vor dem Lesen einer Zeile ausgelöst wird

TOnFoundEvent = procedure(Sender: TObject; Position: TCSVPos; Value: String) of object;

Event, das bei einem Suchtreffer ausgelöst wird

TProgressEvent = procedure(Sender: TObject; ProcessedKB, MaxKB: Integer; Percent: Double) of object;

Event, das den Fortschritt eines Vorgangs anzeigt


Erstellt mit PasDoc 0.16.0.