Sortierung des Cue-Arrays
=========================

Benutzung von CueArray:


Lesend und/oder Schreibend (Sortiertes Einfügen neuer Elemente ins Array implementieren! Oder Array anschließend sortieren.)
--------------------------

int TForm1::ReadCueList(String FileName, int CueArrayOffset)
	-> Cues werden aus WAV-Datei gelesen und an einen bestimmten Offset des Cue-Array geladen. Duplikate werden ggf. eliminiert (CueExists()).
	aufgerufen von:
	- void TForm1::Read(String FileName)	=> Hier ist eine Neusortierung erforderlich!
		-> ReadCueList(FileName, 0)
		aufgerufen von:
		- void __fastcall TForm1::ButtonReadClick(TObject *Sender)
		- void __fastcall TForm1::MenuReadClick(TObject *Sender)
	- void TForm1::Write(String FileName)	=> Keine Neusortierung erforderlich, da die Cues aus der WAV-Datei lediglich *temporär*
											   hinter das "offizielle" Ende des Cue-Arrays gelesen werden (ggf. bereits ohne Duplikate),
											   um dann alles zusammen in die WAV-Datei zurückzuschreiben. Bis nCues ist das Array sortiert,
											   ab nCues möglicherweise nicht mehr, was aber nichts macht, da die Cues in der WAV-Datei selbst
											   ruhig unsortiert sein dürfen.
		-> ReadCueList(FileName, nCues)
		aufgerufen von:
		- void __fastcall TForm1::ButtonWriteClick(TObject *Sender)
		- void __fastcall TForm1::MenuWriteClick(TObject *Sender)

void TForm1::Load(String FileName)			=> Hier ist eine Neusortierung erforderlich!
	-> Cue-Array wird neu gefüllt (vorhandene Einträge werden verworfen). Duplikate werden ggf. eliminiert (CueExists()).
	aufgerufen von:
	- void TForm1::ProcessFile(String FileName)
	- void __fastcall TForm1::ButtonLoadClick(TObject *Sender)
	- void __fastcall TForm1::MenuLoadClick(TObject *Sender)

void TForm1::AddTimeOffsetToAllCues()	=> Keine Neusortierung erforderlich, da auf *alle* Cues derselbe Zeit-Offset addiert wird!


Nur Lesend (Keine Maßnahmen erforderlich)
----------

bool TForm1::CueExists(int CueArrayIndex)
void TForm1::Write(String FileName)
void TForm1::Display(void)
void TForm1::Save(void)
void TForm1::SaveCueSheet(void)



Frei definierbare Anzeige
=========================

Zeile
-----
0:00:00.261 - 0:00:00.409 (0:00:00.147) Cue 1 - Bla bla (Basic)
Begin - End (Length) Label - Note (Type)
%begin - %end (%length) %label - %note (%type)

Zeitformat
----------
0:05:38.261
h:mm:ss.fff
%h:%02m:%02s.%3f
%h:%02m:%06.3s
Die Zahl vor dem Buchstaben gibt die Mindestzahl der Stellen an. Es könnten auch mehr Stellen benötigt werden,
z.B. wenn die Minuten weggelassen werden, würden für die Sekunden 4 Stellen benötigt.

Option, führende Nullen wegzulassen:
0:00:00.261 -> 0.261
0:00:38.261 -> 38.261
0:05:38.261 -> 5:38.261
1:05:38.261 -> 1:05:38.261
Regel:
- Solange 1. Zeichen "0" oder ":", erstes Zeichen abschneiden.
- Wenn 1. Zeichen "." oder Stringende, dann "0" an den Beginn einfügen.

%H	Stunde 0...max
%M	Minute 00...59 (muß mit Stunde zusammen verwendet werden)
%m	Minute 0...max (nicht mit Stunde zusammen verwenden!)
%S	Sekunde 00...59 (muß mit Minute zusammen verwendet werden)
%s	Sekunde 0...max (nicht mit Stunde oder Minute zusammen verwenden!)



h:mm:ss
mm:ss.



1:23:45.678 (h:m:s)		%h:%m:%s	keine führenden Nullen, max. 3 Nachkommastellen
5025.678 (s)			%s			keine führenden Nullen, max. 3 Nachkommastellen
83:45.678 (m:s)			%m:%s		keine führenden Nullen, max. 3 Nachkommastellen
83.7613 (m)				%m			keine führenden Nullen, max. 4 Nachkommastellen
1:1425.678 (h:s)		%h:%s		keine führenden Nullen, max. 3 Nachkommastellen
1:23.7613 (h:m)			%h:%m		keine führenden Nullen, max. 4 Nachkommastellen
1.396021667 (h)			%h			keine führenden Nullen, max. 9 Nachkommastellen

- "führende Nullen" beziehen sich immer auf den ganz links stehenden Parameter (bei 1...n Parametern)
- mittlere Parameter haben grundsätzlich 2 Stellen vor dem Komma (bei >2 Parametern)
- "Nachkommastellen" bezieht sich immer auf den ganz rechts stehenden Parameter (bei 1...n Parametern)






|  |
|  |
|  |
|  |
|  |
|  |
|  1380 s
|
60 m
3600 s

