AGB  ·  Datenschutz  ·  Impressum  







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

Dateityp ermitteln

Ein Thema von sexy_betty · begonnen am 15. Nov 2006 · letzter Beitrag vom 16. Nov 2006
 
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#11

Re: Dateityp ermitteln

  Alt 16. Nov 2006, 03:18
Zitat von sexy_betty:
Der Ansatz ist interessant. Ein bischen stört mich da mein perfektionismus. weil nicht immer jede Textdatei dann auch als Textdatei gewertet werden würde. egal, welche kriterien eingeführt werden, normale texte würden leicht erkannt werden, aber extremfälle nicht. was ist zum beispiel mit ganz kurzen texten oder codeausschnitten?
Wenn du auch Extremfälle beachten möchtest, dann musst du dich schon mal hinsetzen und etwas Gehirnschmalz anstrengen. Ich würde auch sagen, du konzentrierst dich zu sehr auf den "angezeigten Text". Soll heißen, ist es denn wirklich interessant "wieviel" Text angezeigt wird? Die Analysen können unabhänig davon laufen. Wenn du es natürlich unbedingt als Kriterium haben willst...

In das von mir vorgestellte Verfahren kannst du es doch auch integrieren: Erstelle eine Zeichenmenge, welche die Zeichen enthält, bei denen die visuelle Darstellung im Memo, RichEdit oder was auch immer abgebrochen wird. Wenn diese Zeichen eine gewisse Häufigkeit haben, kannst du davon ausgehen, das es eine Datei mit Binärdaten ist.

Zitat von sexy_betty:
ich ringe mich halt immer nur ungern zu ergebnissen durch, die nur die halbe wahrheit sind
Die ganze Wahrheit wirst du nicht herausfinden können. Es wäre ein Heidenaufwand sämtliche Prüfungen zu implementieren, die das menschliche Gehirn durchrührt, wenn man einen Text (oder eben eine Binärdatei) betrachtet - Formatierung, Sinnzusammenhang der Zeichen usw. Was du so schön als "Kästchen" bezeichnest deutet für dich auf Binärdaten hin? Was ist, wenn es eine japanische, chinesische oder koreanische "Textdatei" ist? Was ist es für eine Datei, wenn du eine Datei Namens "Data.dat" öffnest und "Maus" liest? Vielleicht ist es nur eine Integer-Zahl die darin abgespreicher ist... Das ließe sich durchaus weiter forführen, aber ich denke es ist klar geworden, das mehr dahinter steht.

Zitat von sexy_betty:
Ein bischen stört mich da mein perfektionismus.
[...]
wie liest mann denn nun bytes und deren einzelne bits ein?
ratlosigkeit macht sich breit
Ich muss schon sagen: Du hegst eine ordentliche Portion Perfektionismus, dafür dass sich bei dieser Aufgabe so schnell Ratlosigkeit breit macht.

Im Anhang habe ich mein Verfahren einmal implementiert.
  • TCharset und abgeleitete Klassen definieren mir meine Zeichenmengen
  • TDataProcessor wendet meine Zeichenmengenklassen auf eine Datei, einen Stream oder einen Text (String) an; d.h. Es wird gezählt wieviel Zeichen im Text in die jeweiligen Klassen gehören.
  • Das Projekt darum ist nur zwecks Darstelung, was passiert
Zur erklärung der Oberfläche:
  • Die ComboBox oben enthält einen Dateinamen. Dort steht das Argument für ProcessFile(...)
  • Das Memo1, links, zeigt die Ausgabe.
  • Das Memo2, rechts, kann als Eingabe verwendet werden. Dort steht das Argument für ProcessText(...)
Die Buttons sind selbsterklärend. - Erstellt mit Delphi 7 Enterprise. Getestet und fehlerfrei! (Und es funktioniert mit ASCII-Zeichen und Nicht-ASCII-Zeichen. Man kann seine Zeichenmengen beliebig definieren, #0..#255) Viel Spaß beim ausprobieren!

Gruß,
Panthrax.
Angehängte Dateien
Dateityp: rar textdatei_oder_nicht_151.rar (3,2 KB, 20x aufgerufen)
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
 


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 17:31 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