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