![]() |
Textfile als solches erkennen
Hallo,
ich möchte unabhängig von der Endung der Datei erkennen, ob es sich um ein Textfile erkennt. Schließlich kann ein Textfile jede Menge Endungen haben (txt, htm, php...). Gibt es dafür eine bestimmte Funktion oder kann man die ersten Bytes auslesen und daran etwas prüfen?! Und wenn ja, wie macht man das?! Vielen Dank schon mal! |
Re: Textfile als solches erkennen
Es ist nicht eindeutig erkennbar.
Du kannst höchstens versuchen nach gewissen Zeichen zu suchen, aber dafür mußt du wissen, welche Kodierungen du zulassen willst. bei ASCII z.B. gibt es keine Zeichen über #127 UTF-8 hat oftmals eine entsprechende BOM und alle Zeichen über #127 entsprechen gewissen Mustern unterhalb der #32 gibt es oftmals nur die Zeichen #13, #10 (Zeilenumbruch) und #8 (Tabulator) aber dennoch können je nach Textformat alle möglichen Zeichen drin vorkommen. |
Re: Textfile als solches erkennen
Du wirst die Datei einfach mal öffnen müssen und durchsuchen ;)
Wenn viele Alphanumerischen Zeichen und #13#10 vorkommen, isses wahrscheinlich Text, wenn viele nicht-Text Zeichen vorkommen ehe binär. Um das zu realisieren könntest du son Array machen, das jedem ASCII-Zeichen einen Wert zuordnet: z.B. 0 für neutral, 1 für ein Textzeichen und -100 für Zeichen, die garantiert nicht in Text vorkommen ;) Achja, BOM's am Anfang sindauch ein Indikator ;) |
Re: Textfile als solches erkennen
Was sind denn BOMs am Anfang?!
ASCII würde mir erst einmal reichen und die Prüfung muss auch nicht so genau sein, dass sie jedes Zeichen einzeln prüft. Es sollte nur ein ungefährer Richtwert sein. Also vielleicht eine Prüfung der ersten Zeichen? Aber wie kann die aussehen? |
Re: Textfile als solches erkennen
![]() Wie gesagt, ordne jedem Zeichen einen Wert zu, der angibt ob es sich wahrscheinlich um Binär oder um Text handelt. Gehe dann duch die ersten 1000 oder so Zeichen und vergleiche danach den erhaltenen Wert mit einem Grenzwert. |
Re: Textfile als solches erkennen
Zur problematik und BOM:
![]() ![]() |
Re: Textfile als solches erkennen
Okay, wenn ich die Links jetzt richtig interpretiere heißt das, dass die normalen Textfiles, die ich prüfen möchte eigentlich gar nicht prüfbar sind, da sie kein BOM enthalten, stimmts?
Ich habe mir mal folgende Function gebastelt:
Delphi-Quellcode:
function CheckTextfile(Datei : string): boolean;
var F: File; DateiAnfang: Array [0..100] of Byte; I: Integer; begin try AssignFile(F, Datei; Reset(F, 1); Blockread(F, DateiAnfang, SizeOf(DateiAnfang)); finally CloseFile(F); end; for I := 0 to 100 do if DateiAnfang[I] //wie kann man hier weitermachen?! end; |
Re: Textfile als solches erkennen
Zitat:
Zitat:
Zitat:
|
Re: Textfile als solches erkennen
Das sind auch die probleme unter Windows das viel unfug mit den Dateien getrieben wird.
Warum kann man die Extension nicht generell entfernen und nur noch die Datei anhand eines Header erkennen lassen. Bei AVI und anderen Dateien gehts ja auch warum nicht bei Text ? (.txt). Eine *.chm Datei kann und wird deshalb auch als ausführbare EXE (Virus, trojaner) verwendet. gruss |
Re: Textfile als solches erkennen
Zitat:
also 2 Byte-Zeichen und 1-Byte-Ansi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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