Zitat von
implementation:
Delphi-Quellcode:
begin
AssignFile(f, 'Lieddatei');
Reset(f);
while not eof(f) do begin
Read(f,t)
SetLength(l,Length(l)+1);
l[Length(l)-1] := t;
end;
CloseFile(f);
end;
Ich versteh das Read nicht ganz:
Aus F (also z.B. Test.mp3) wird in T gelesen (Also TTon)
Wo wird denn bestimmt was er wo einließt also wo Steht, dass er t.Frequenz einen wert zuweisen soll?
!€!D!|!T :
Ab einem bestimmten Punkt derden Frequenz und Length nur noch 0 zugewiesen obwohl das lied noch nicht vorbei ist....
EDIT2:
Ok, ich habe es jetzt so programmiert:
Delphi-Quellcode:
unit UMain;
interface
uses
IniFiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 =
class(TForm)
BLoad: TButton;
PB: TProgressBar;
TWait: TTimer;
BSave: TButton;
procedure BLoadClick(Sender: TObject);
procedure TWaitTimer(Sender: TObject);
procedure BSaveClick(Sender: TObject);
private
{ Private-Deklarationen }
public
procedure Laden;
procedure Speichern;
end;
type
TTon =
record
Frequenz: Word;
BPM: Word;
end;
TLied =
array of TTon;
TNotenblatt =
file of TTon;
var
f: TNotenblatt;
l: TLied;
t: TTon;
Save: TIniFile;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BLoadClick(Sender: TObject);
begin
Laden;
end;
procedure TForm1.BSaveClick(Sender: TObject);
begin
Speichern;
end;
procedure TForm1.Laden;
begin
PB.Position:=0;
AssignFile(f,'
Test.mp3');
Reset(f);
while not eof(f)
do begin
PB.StepBy(1);
Read(f,t);
SetLength(l,Length(l)+1);
l[Length(l)-1] := t;
end;
CloseFile(f);
PB.Position:=100;
TWait.Enabled:=TRUE;
end;
procedure TForm1.Speichern;
begin
PB.Position:=0;
Save:=TIniFile.Create('
save.ini');
while not (Length(l)=0)
do
begin
PB.StepBy(1);
Save.WriteInteger('
Lied','
Frequenz',l[1].Frequenz);
Save.WriteInteger('
Lied','
BPM',l[1].BPM);
SetLength(l,Length(l)-1);
end;
Save.Free;
PB.Position:=100;
TWait.Enabled:=TRUE;
end;
procedure TForm1.TWaitTimer(Sender: TObject);
begin
PB.Position:=0;
TWait.Enabled:=False;
end;
end.
Das dauert schon ziehmlich lange bis der mit Laden fertig ist,
aber noch SEHR viel länger um mit Speichern fertig zu werden....
Warum ist das so, mache ich was falsch?
Ps: Was genau meintest du damit das ich es Binär abspeichern sollte?