AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Append und Binär-Dateien

Ein Thema von -=andreas=- · begonnen am 12. Jul 2004 · letzter Beitrag vom 14. Jul 2004
Antwort Antwort
-=andreas=-

Registriert seit: 12. Jul 2004
3 Beiträge
 
#1

Append und Binär-Dateien

  Alt 12. Jul 2004, 16:57
Hi

Ich habe hier etliche kleine wav-Dateien, die ich in einer festgelegten Reihenfolge aneinanderreihen möchte.
Eine Prozedur, die zwei Quell- in eine neue Zieldatei schreibt habe ich. Diese arbeitet aber viel zu langsam, da zwei temporäre Dateien jeweils als Quelle/Ziel gewählt werden und immer überschrieben werden.

Gibt es einen Befehl wie append, der eine Binärdatei an eine andere anhängt, oder weiß jemand eine Optimierungsmöglichkeit für meine Prozedur?


Delphi-Quellcode:
procedure kopieren(datei1,datei2, ziel : string);
type puffer = array [1..60000] of byte;
var file1, file2, file3 : file;
    pufzeiger : ^puffer;
    anzahl_bytes : longint;
begin
  assign(file1, datei1);
  assign(file2, datei2);
  assign(file3, ziel);
  reset(file1);
  reset(file2);
  rewrite(file3);
  new(pufzeiger);
  while not eof(file1) do
    begin
    blockread(file1, pufzeiger^, sizeof(pufzeiger^), anzahl_bytes);
    blockwrite(file3, pufzeiger^, anzahl_bytes);
    end;
  while not eof(file2) do
    begin
    blockread(file2, pufzeiger^, sizeof(pufzeiger^), anzahl_bytes);
    blockwrite(file3, pufzeiger^, anzahl_bytes);
    end;
  dispose(pufzeiger);
  close(file1); close(file2); close(file3);
end;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Append und Binär-Dateien

  Alt 12. Jul 2004, 17:23
Zitat von -=andreas=-:
Ich habe hier etliche kleine wav-Dateien, die ich in einer festgelegten Reihenfolge aneinanderreihen möchte.
Ob das funktioniert ??? WAV-Dateien beginnen doch mit einem Header, oder nicht ?
Folgende Procedure kopiert binäre Dateien aneinander (falls das Ziel schon exisitiert, wird angehängt):
Delphi-Quellcode:
procedure InternalConcatFiles(const DstFile,SrcFile: string);
var
   SrcStream,DstStream: TFileStream;
begin
   SrcStream := TFileStream.Create(SrcFile,fmOpenRead or fmShareDenyWrite);
   DstStream := nil;
   try
      if not FileExists(DstFile) then
      begin
         DstStream := TFileStream.Create(DstFile,fmCreate);
      end
      else
      begin
         DstStream := TFileStream.Create(DstFile,fmOpenWrite);
         DstStream.Position := DstStream.Size;
      end;

      DstStream.CopyFrom(SrcStream, SrcStream.Size); // copy data
   finally
      SrcStream.Free;
      DstStream.Free;
   end;
end;
Andreas
  Mit Zitat antworten Zitat
-=andreas=-

Registriert seit: 12. Jul 2004
3 Beiträge
 
#3

Re: Append und Binär-Dateien

  Alt 12. Jul 2004, 18:06
Das mit den Dateien klappt schon, ich habe die vorher mit dem DragonUnpacker aus einem Spiel ausgepackt und will das nun neu packen.

Gibt es eine Möglichkeit die Prozedur mit FreePascal zu kompilieren, oder muss ich Delphi installieren?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Append und Binär-Dateien

  Alt 12. Jul 2004, 18:10
Zitat von -=andreas=-:
Gibt es eine Möglichkeit die Prozedur mit FreePascal zu kompilieren, oder muss ich Delphi installieren?
Probiers aus. Aber Streams sollten bei FreePascal schon enthalten sein, die alten Pascal-Files sowieso.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
-=andreas=-

Registriert seit: 12. Jul 2004
3 Beiträge
 
#5

Re: Append und Binär-Dateien

  Alt 13. Jul 2004, 21:34
FPC konnte es auch mit Delphi-Unterstützung nicht kompilieren, aber zum Glück gibt es die c't

Danke für die Prozedur, jetzt werde ich nur noch etwas über Datei-/Verzeichnisoperationen lesen, damit ich nicht tausende InternalConcatFiles()-Zeilen im Code habe
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#6

Re: Append und Binär-Dateien

  Alt 14. Jul 2004, 14:32
Append für BInärdateien gibt es so nicht, aber du kannst per Seek(f,Filesize(f)); den Datei-Zeiger ans Ende setzen (genauso wie Append es auch tut) die Datei muss dafür natürlich vorher geöffnet sein
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz