Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi einer datei einen tag zuweisen? (https://www.delphipraxis.net/122699-einer-datei-einen-tag-zuweisen.html)

milchbrötchen 20. Okt 2008 20:41


einer datei einen tag zuweisen?
 
hi,
gibt es eine möglichkeit einer datei einen tag zuzuweisen? also so wie man zb auch einem button1 einen tag zuweisen kann: button1.tag:=512;
der sollte natürlich beim kopieren bzw verschieben nicht verloren gehen und einfach abzufragn sein...

danke schon mal im voraus...

Die Muhkuh 20. Okt 2008 20:46

Re: einer datei einen tag zuweisen?
 
Entweder den Tag als Dateiname nutzen oder in die erste Zeile der Datei den Tag hinterlegen.

milchbrötchen 20. Okt 2008 20:48

Re: einer datei einen tag zuweisen?
 
den dateinamen wollte ich eig gleich lassen... und in die erste zeile kommt glaub ich auch nicht so gut an, weil die dateien mehrere gb groß sind...

Luckie 20. Okt 2008 20:51

Re: einer datei einen tag zuweisen?
 
Zu allererst st eine Datei mal ein Dateisystemobjekt und eine Schaltfläche ein VCL Objekt. Es handelt sich alo um zwei gänzlich verschiedene Dinge. Ein VCL Objekt kann man sleber mit beliebigen Eigensachaften ausstatten. Bei einem Dateisystemobjekt ist man von der Implementation des Dateisystem abhängig.

So, was verstehst du jetzt unter einem Tag und was für eine Funktion soll diese Eigenschaft erfüllen? Um eine Datei zu kennzeichnen kannst du entwerder die Informationen in die Datei schreiben, die Dateinamenerweiterung ändern oder unter NTFS Alternate Data Streams nutzen.

Was hat die Größe damit zu tun?

milchbrötchen 20. Okt 2008 21:22

Re: einer datei einen tag zuweisen?
 
dauert es nicht länger die erste zeile einer 1gb datei auszulesen als die einer 1mb großen datei? :oops:

ich möchte jeder datei einfach eine nr zwischen 1 und 10000 zuweisen. die haben alle dieselbe dateinamenerweiterung.

Luckie 20. Okt 2008 21:25

Re: einer datei einen tag zuweisen?
 
Wieso? Du brauchst doch mit einem FileStream nur das erste vier Byte zu lesen.

milchbrötchen 20. Okt 2008 21:28

Re: einer datei einen tag zuweisen?
 
und die datei kann genau so geöffnet und verwendet werden wie vorher? auch wenn man 4 byte hinzufügt, egal ob es eine doc, xls, mp3, iso, jpg oder sonstige datei ist?

jfheins 20. Okt 2008 21:32

Re: einer datei einen tag zuweisen?
 
Nein natürlich nicht ^^

Aber unter ntfs kannst du die oben angesprochenen ADS verwenden, die sind dafür geignet Dateien mit zusatzinfos zu versehen.

taaktaak 20. Okt 2008 21:36

Re: einer datei einen tag zuweisen?
 
Würde sagen: JEIN

Probiere es aus. Habe eben mal zum Spaß die ersten 4 Bytes einer mp3-Datei verändert und zu meiner Überraschung wird sie trotzdem abgespielt. Aber bestimmt ist nicht jedes Programm so tolerant.

Wozu soll denn dieses Tag nutzen?
Erkläre doch mal näher, was du damit bezwecken willst.

Luckie 20. Okt 2008 21:38

Re: einer datei einen tag zuweisen?
 
Zitat:

Zitat von taaktaak
Würde sagen: JEIN

Probiere es aus. Habe eben mal zum Spaß die ersten 4 Bytes einer mp3-Datei verändert und zu meiner Überraschung wird sie trotzdem abgespielt. Aber bestimmt ist nicht jedes Programm so tolerant.

Befinden sich da nicht die ID3-Tags? Wenn dem so ist, dürfte das der Wiedergabesoftware egal sein, was da steht.

taaktaak 20. Okt 2008 21:49

Re: einer datei einen tag zuweisen?
 
Hm, habe mal in alten Unterlagen nachgeschaut: In den ersten 32 Bit eines mp3-Files soll eigentlich der mp3-Header placiert sein. Der enthält ja nun durchaus wichtige Informationen auch für die Wiedergabe.

Wenn ich nun 4 Bytes überschrieben habe, sollten damit eigentlich ALLE diese Informationen vernichtet sein. Seltsam, aber ich möchte im Augenblick nicht weiter ergründen wieso es trotzdem funktioniert.
Höre da lieber noch etwas Weihnachtsmusik :dancer:

Namenloser 20. Okt 2008 21:52

Re: einer datei einen tag zuweisen?
 
Geht es denn um "eigene" Dateien oder fremde Formate?

haentschman 21. Okt 2008 18:30

Re: einer datei einen tag zuweisen?
 
Hallo erstmal.... :-D
Zitat:

Erkläre doch mal näher, was du damit bezwecken willst.
...ich rate mal.

- du möchtest die Dateien über eine eindeutige Nummer ansprechen. ( Index )

Da fällt mir als Lösung eine StringList ein. Da hast du zu dem Dateinamen / Pfad einen eindeutigen Index.
Da kannst du sowohl über den Dateinamen den Index herausfinden als auch über den Index den Dateinamen.

bis bald... :hi:

PS: nach dem 3.Mal lesen 8)
- wenn die Datei immer die selbe Nummer tragen soll wird es mit der StringList schwierig, da nicht sicher gestellt ist, daß beim Einlesen der Dateiname immer an der gleichen Position landet. Es sei denn du sortierst dann nach deinen Vorgaben.

Gausi 21. Okt 2008 18:47

Re: einer datei einen tag zuweisen?
 
Zitat:

Zitat von taaktaak
Hm, habe mal in alten Unterlagen nachgeschaut: In den ersten 32 Bit eines mp3-Files soll eigentlich der mp3-Header placiert sein. Der enthält ja nun durchaus wichtige Informationen auch für die Wiedergabe.

Wenn ich nun 4 Bytes überschrieben habe, sollten damit eigentlich ALLE diese Informationen vernichtet sein. Seltsam, aber ich möchte im Augenblick nicht weiter ergründen wieso es trotzdem funktioniert.
Höre da lieber noch etwas Weihnachtsmusik :dancer:

Eine MP3-Datei besitzt keinen Header. Am Anfang der Datei kann der ID3v2-Tag stehen, beginnend mit "ID3" und Versions- und Größeninformationen des Tags. Danach kommen beliebig viele MPEG-Frames. Am Ende kommen manchmal Lyric-Tags und ggf. 128 Bytes für den ID3v1-Tag, beginnend mit "TAG".

Die 4 Bytes, von denen du sprichst, sind die 4 Byte der MPEG-Frame-Header. Jeder der zig-hundert oder tausend Frames hat diesen Header. Da mp3-Dateien an sich keinen Header haben, muss die Wiedergabe-Engine den ersten solchen MPEG-Frame in der Datei suchen. Das geschieht über den 11-Bit-Marker am Anfang des MPEG-Headers und Konsistenzprüfung der übrigen 21Bit in diesen 4 Bytes. Wenn der am Anfang nicht gefunden wird, suchen die meisten Player noch ein paar Kilobyte weiter.

Wenn man also die ersten 4 Bytes einer mp3-Datei überschreibt, wird nur der erste Frame zerstört (iirc 1/26 Sekunde), der Rest läuft normal. Nur unter bestimmten Umständen wird die gesamte Datei für viele Player unbrauchbar, nämlich dann, wenn der ID3v2-Tag zu Beginn der Datei vorhanden ist und größer ist als die Suchtiefe des Players nach dem ersten Frame. Durch das überschreiben wird der ID3-Tag-Header unbrauchbar, wodurch der Tag nicht vom Dekoder übersprungen werden kann.

Edit: Soviel zu OT. Die ersten 4 Bytes für einen Tag der Datei zu nutzen ist und bleibt aber eine schlechte Idee, auch wenn das bei mp3-Dateien manchmal ohne sicht/hörbare Auswirkungen bleibt.

taaktaak 21. Okt 2008 21:59

Re: einer datei einen tag zuweisen?
 
Hallo Gausi!
Vielen Dank für deine ausführliche Erläuterung :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz