BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- DOS-Programmierung: ASCII-Wirrwarr (http://www.black-board.net/thread.php?threadid=14166)


Geschrieben von COCYHOK am 12.10.2003 um 20:25:

  DOS-Programmierung: ASCII-Wirrwarr

Hab kürzlich mal n Proggy in TP geschrieben (Compiler für DOS-Programme). Um eine leere Fläche irgendwie auszufüllen, bediene ich mich gerne der ASCII-Zeichen 219 bis 223. Mit diesen lasse ich zufällig die Fläche ausfüllen. Wenn ich das Programm innerhalb von TP starte, gibts keine Probs (meistens). Wenn ich aber unter Win98 die EXE mit dem Explorer direkt starte, erscheinen die Zeichen 221 und 222 wie die ANSI-Zeichen ¦ und Ì. Was kann man da machen? Warum werden 219, 220 und 223 als ASCII dargestellt und nur 221 und 222 als ANSI (was ja faktisch gar nicht geht)?



Geschrieben von phlox81 am 12.10.2003 um 20:46:

 

Der ASCII Zeichensatz legt lediglich die ersten 128 Zeichen fest...

Devil



Geschrieben von COCYHOK am 12.10.2003 um 21:43:

 

FALSCH!
Ich weiß zwar nicht genau, wie es ist, aber entweder sind die ersten 128 Zeichen gleich und die zweiten 128 Zeichen verschieden oder es sind alle verschieden. Aber die zweiten 128 (erweiterten) Zeichen sind auf jedenfall zwischen ANSI und ASCII verschieden! Kannst ja mal ne Stichprobe machen! Öffne die DOS-Box (unter WinXPlosion wird vieleicht sogar in der DOS-Box der ANSI-Zeichensatz verwendet - wäre anzunehmen) und gib per Alt ein Zeichen von 129 bis 255 ein. Öffne dann Notepad und gib den gleichen Code ein. Die Zeichen werden verschieden sein (wenn du nicht zufällig gerade eins erwischt hast, das gleich ist)! Ein gutes Beispiel sind die Rahmenzeichen. Hast du jemals in einer Windowsanwendung diese Zeichen gesehen?



Geschrieben von CDW am 12.10.2003 um 21:53:

 

nix falsch Augenzwinkern wenn du genau darauf achtest, dann siehst du, dass die ersten 128 gleich sind, denn die buchstaben und ziffern+sonderzeichen haben alle denselben wert
hier ist ein VBS Script, welches dir die zeichen zusammen mit dem Wert in die "asciicode.txt" ausgibt (einfach in eine Textdatei reinkopieren und die Endung VBS verpassen):
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
set fso = wscript.createobject("scripting.filesystemobject")
SET Shell=CreateObject("Wscript.Shell")
ausgabe="asciicode.txt"

Dim Zahl1, ergebniss
On Error Resume Next
init
schreibe
starte

Function init
  If fso.fileexists(ausgabe) Then Ask=MsgBox("Existiert bereits, überschreiben?", vbyesno + vbquestion,"Nochmal erstellen? Ohne Sinn ...")
  If Ask=vbNo Then wscript.quit
End Function


Function schreibe
  SET out=fso.CreateTextFile(ausgabe)

   For i=0 to 255
    out.writeline(Zahl1 &"  "&Chr(Zahl1))
    Zahl1=Zahl1+1
Next

End Function

Function starte
  Shell.run(ausgabe)
  If Err.Number >0 Then Shell.popup "Unerwarterter Fehler ist augetreten!"&vbcrlf&"Wahrscheinlich ist der Ordner/Datei schreibgeschützt..."&vbcrlf&"oder Sie haben keine Schreibberechtigung oder"&vbcrlf&"der Ilja sitzt vor diesem PC...oder..."&vbcrlf&"Meinen Sie ich habe an diesem Abend nichts "&vbcrlf&"besseres zutun als für jeden erdenklichen Fehler,"&vbcrlf&"den Sie verursachen könnten, ne Meldung zu machen?",,"Schitt, ein Fehler...",vbokonly+vbcritical+vbsystemmodal
  If err.number<1 Then MsgBox "Keine Fehler aufgetreten, die Datei wurde neu erstellt!",vbokonly+vbinformation,"Ascii Code  ok..."
End Function

Notepad hat nur keine Zeichendarstellung bis 32, weil davor auch die ganzen (unter Win als Steuerzeichen) genutzten zeichen kommen...

siehe noch mal Devil's
Zitat:

Der ASCII Zeichensatz legt lediglich die ersten 128 Zeichen fest...

nicht ANSI !



Geschrieben von phlox81 am 12.10.2003 um 22:13:

 

Zitat:
Original von COCYHOK
FALSCH!


Nein, RICHTIG.

Devil



Geschrieben von COCYHOK am 13.10.2003 um 23:17:

 

Warte mal
1.: Sowohl der ASCII(DOS)-Zeichensatz, als auch der ANSI(Win)-Zeichensatz besteht aus 256 Zeichen. Die Zeichensätze werden jeweils unterteilt in den Standard-Zeichensatz (0 bis 128) und den erweiterten Zeichensatz (129 bis 255). Ich sage, Die Zeichen 129 bis 255 sind AUF JEDEN FALL (siehe z.B. Zeichen #200) zwischen ANSI und ASCII verschieden!! Ich glaube, ihr redet am Thema vorbei, denn Folgendes:
2.: Der Einfachheit halber bleiben wir beim Zeichen 200: Wenn du die Konsole öffnest und Alt-200 eingibst, siehst du ein Rahmenzeichen; Gibst du diese Tastenkombination aber in einem Win-Programm ein, erscheint ein +! Das heißt erstmal, dass ASCII129-255 <> ANSI129-255, gell? Nun zu meinem Problem: Ich schreibe also in den Quelltext, dass im Programm später an irgendeiner Stelle das Zeichen mit dem Code 200 erscheinen soll. Da sowohl der Compiler als auch das fertige Programm DOS-Programme sind, steht nur der ASCII-Code zur Verfügung und es ist faktisch unmöglich, dass jemals ein Zeichen aus dem erweiterten ANSI-Code erscheint, auch gell? ABER GENAU DAS IST IN MEINEM PROGRAMM DER FALL: Manchmal erscheint an dieser Stelle ein Rahmenzeichen, manchmal ein +. Das geht bitteschön wie?

Nochwas: Was ist das für ne Sprache, dieser Code da oben?


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH