Entwickler-Ecke

Dateizugriff - TFileStream kann keine mp3 und wav dateien öffnen ?


mimi - So 10.08.03 17:51
Titel: TFileStream kann keine mp3 und wav dateien öffnen ?
Hallo,
warum kann folgende procedure keine mp3 oder wav dateien öffnen ?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
var
  Datei,Datei2, Datei3, Datei4:TStream;
  i,len,Size:Integer;
  DateiHeader:String;
  Test:TSearchRec;
  CFTime, EFTime, RFTime:_FileTime;
  DL:String;
begin
  Datei  := TFileStream.Create(GetExeDir + 'temp\' + ExtractFileName(Filename)+'.tmp', fmCreate); // arichvname
  Datei2 := TFileStream.Create(GetExeDir + 'temp\header.tmp', fmCreate); // Header
  Datei3 := TFileStream.Create(FileName, fmCreate); // Dateiarichv
  len:=Strlen(Pchar(dl));

  Len:=Dateien.Count;
  Datei2.Write(Len, SizeOf(Len));
  dl:='a!' + '|';
  for i:=0 to Dateien.Count-1 do begin
    Datei4 := TFileStream.Create(Dateien.Strings[i], fmOpenRead);

    FindFirst(Dateien.Strings[i], faAnyFile,test);
    FileTimeToLocalFileTime(test.FindData.ftCreationTime, CFTime);
    FileTimeToLocalFileTime(test.FindData.ftLastWriteTime, EFTime);
    FileTimeToLocalFileTime(test.FindData.ftLastAccessTime, RFTime);
    DateiHeader:=Dateien.Strings[i] + ';'
                 + DateTimeToStr(FileTimeToDateTime(CFTime)) + ';' // erstellungs datum / Uhrzeit
                 + DateTimeToStr(FileTimeToDateTime(EFtime)) + ';' // letztes änderungs datum
                 + DateTimeToStr(FileTimeToDateTime(RFtime)) + ';' // Letzter (lese) zugriefs datum / Uhrzeit
                 + IntToSTr(test.Size) + ';' // Datei größe
                 + FileGetTypeName(Dateien.Strings[i]) + ';' // Datei beschreibung
                 + IntTostr(Datei.Position) + ';' // Datei Position
                 + IntTostr(Datei4.Size); // Endposition 
    Len:=StrLen(PChar(DateiHeader));
    Datei.CopyFrom(Datei4, Datei4.Size);


    dl:=dl + IntTostr(Datei2.Position) + ',' + InttoStr(Len) + '|' ;
    Datei2.Write(Pchar(DateiHeader)^,len);
    DateiHeader:='';
    Datei4.Free;

  end;

  Len:=StrLen(Pchar(DL));
  Datei2.Write(Len, SizeOf(Len));
  Datei2.Write(PChar(dl)^,Len);

  Len:=Datei2.Size;
  Datei3.Write(Len,SizeOF(Len));
  Datei3.CopyFrom(Datei2,0);

  Len:=Datei.Size;
  Datei3.Write(Len,SizeOF(Len));
                              
  Datei3.CopyFrom(Datei,0);
//  Datei.Free;
//  Datei2.Free;
//  Datei3.Fmree;
//  Datei4.Free;
  FindClose(test);

egal wie klein die datei ist, ist wird immer derselbe fehler ausgelöst:
Kann die Datei nicht öffnen.
dann habe ich es per FileExists versucht und die datei wurde gefunden, das ist also ein andrea fehler.

bmp, textdateien und bilder kann ich öffnen, werde es gleich nochma mit andren dateien versuchen:)


AndyB - So 10.08.03 18:40

Du hast aber kein anderes Programm gerade laufen, das die MP3 Dateien nutzt?

Ansonsten würde ich es noch mit fmOpenRead or fmShareDenyWrite probieren.


mimi - Mo 11.08.03 12:03

ne leider hat es daran auch nicht gelegen...


mimi - Mi 13.08.03 13:12

habs gelöst, weiß zwar nicht wie, aber es geht aufeinmal :)