![]() |
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 |
Re: Textfile als solches erkennen
Hallo,
bin ich auch erst drauf reingefallen :wink: lies es mal in einer anderen Reihenfolge. |
Re: Textfile als solches erkennen
Zitat:
Also nochmal für himi :mrgreen: Zitat:
|
Re: Textfile als solches erkennen
arg :wall:
|
Re: Textfile als solches erkennen
Zitat:
|
Re: Textfile als solches erkennen
ohne die ganzen Explorer-Plugins, welche meißt sinnlose zusätliche Infos aus den Dateien auslesen,
wäre das Auflisten der Windows-Verzeichnisse schneller, da man nich erst in jede Datei reingucken muß, um welchen Typ es sich handelt. Geht eigentlich unter Linux etwas wie FindFirst(*.txt) ? Also wenn da der Typ in der Datei drinsteht und nicht als Namensanhang vorhanden ist. |
Re: Textfile als solches erkennen
Wenn unter Linux der Dateityp am Anfang der Datei steht, dann musst du nur eine unter Linux erstellte Textdatei unter Windows öffnen und würdest es sehen. Damit wären aber Linux Textdatei inkompatibel zum Rest der Welt und das glaube ich nicht. Deswegen glaube ich eher, dass wenn Linux den Dateityp speichert, dies im Dateisystem tut. Und dann müsste dies auch das Programm machen, welches die Datei erstellt.
|
Re: Textfile als solches erkennen
|
Re: Textfile als solches erkennen
Also auch nur Tests mit try and error.
|
Re: Textfile als solches erkennen
Ich habe jetzt folgendes gefunden:
![]() Bewirkt zwar auch keine Wunder, aber vielleicht hilfts jemandem weiter. |
Re: Textfile als solches erkennen
Auch nicht besser als alles andere, was bisher vorgeschlagen wurde.
|
Re: Textfile als solches erkennen
Zumal auch noch folgendes Problem besteht (für alle die die Funktion verwenden wollen und sich nicht so gut auskennen):
Der Code beschränkt sich nur auf die ersten 127 Zeichen, demnach würde selbst ein Textfile mit deutschen Umlauten nicht als solcher erkannt werden.. Man müsste also wenn dies nicht geschehen soll die 127 auf eine 255 abändern. |
Re: Textfile als solches erkennen
|
Re: Textfile als solches erkennen
Zitat:
|
Re: Textfile als solches erkennen
Nun ja, heutzutage ist ASCII eher als 'lesbar mit Notepad' zu verstehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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