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
 
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#9

Re: Dateityp ermitteln

  Alt 16. Nov 2006, 02:24
Zitat von sexy_betty:
eine andere möglichkeit wäre vielleicht, einfach zu überprüfen ob jedes erste bit eines bytes 0 ist, wenn das bei jedem byte so ist, liegt es doch nahe, dass es ascii-codes sind. da drängt sich mir die frage auf, haben ascii steuerzeichen auch eine null am anfang? und wenn ja, wie lese ich mit delphi das erste bit eines bytes aus?
ich gehe mal davon aus das du mit erstes bit das MSB meinst also 2^7...
dann kannst du es so auslesen (bzw. jedes beliebiges durch ändern der 7 )

Delphi-Quellcode:
const b=128;//10000000
begin
  if (b and (1 shl 7))>0 then
    showmessage('erstes bit gesetzt');
im ASCII gibt es sonderzeichen wo das MSB 0 ist (<=30d imho), aber bedenke das z.B. tab=9d, zeilenumbruch=13d+10d (cr+lf) also auch < 30d sind.
zum Thema Steuerzeichen: http://de.wikipedia.org/wiki/Steuerzeichen

weiterhin schreibst du von ascii...unter windows gilt normal ansi. d.h. zeichen mit gesetztem MSB sind nicht unbedingt Steuerzeichen (sind hauptsächlich Sprachbedingte Zeichen). und bei Unicode (UTF8/16/...) kannst du dich auch nicht mehr auf eine solche Prüfung (MSB=1) verlassen.

Kurzum würde ich nur eine Prüfung auf #0 machen (allein schon aus Performancegründen). das dieses Steuerzeichen bei binärdaten gerne als trennzeichen verwendet wird. Würde aber den Benutzer entscheiden lassen ob er die Datei (im Textmodus) öffnen will...

Übrigends die kleinen schwarzen vierecke sind (hauptsächlich) solche nicht-Text-zeichen
imho arbeiten FTP-Clienten mit einer whitelist, d.h. es ist im programm definiert, welche Dateiendungen im ASCII-Modus hochgeladen werden und der Rest wird binär hochgeladen (es sei denn, man erzwingt den binär/ascii-modus).

die Datei kannst du per Filestream einlesen und die read(-buffer) methoden nutzen um einzelne bytes/blöcke auszulesen...

HTH Frank
  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 22:00 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