SoftMaker.de

Deutschsprachiges Diskussionsforum
Aktuelle Zeit: 21.05.2013 20:36:05

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fehler in BM
BeitragVerfasst: 16.01.2011 01:28:12 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Wenn eine Textdatei im DOS-Format von BM zum Bearbeiten geöffnet wird, werden die Umlaute in andere Zeichen geändert.

Beispiel:
Die Datei im DOS-Format: ä-ö-ü-Ä-Ö-Ü-ß
sieht im Ansi-Format so aus: „-”--Ž-™-š-á
BM macht daraus: ?-?--?-?-?-á
Im DOS-Editor sieht's dann so aus: ?-?-ü-?-?-?-ß

Code:
OPEN "DOSein.txt" FOR INPUT AS #1
OPEN "DOSaus.txt" FOR OUTPUT AS #2

WHILE NOT EOF( 1 )
'Datei öffnen
   LINE INPUT #1, t

'Datei ohne Bearbeitung wieder speichern

   PRINT #2, t
WEND

CLOSE


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 16.01.2011 11:01:48 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1463
BM versteht m. W. nur Windows-ANSI; der "Fehler" ist somit korrekt.
Eine Codepage-Umwandlung müsste mittels TM oder PM vorgenommen werden.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 16.01.2011 14:09:28 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Zitat:
BM versteht m. W. nur Windows-ANSI; der "Fehler" ist somit korrekt.

Lieber Panosis,

lassen wir das DOS mal weg.

ANSI-Zeichen: „-”-Ž-™-š-á
BM macht daraus: ?-?-?-?-?-á

Immer noch korrekt?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 16.01.2011 14:25:30 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Öffne mal mit
Code:
tm.Documents.Open "C:\xxx",  tmFormatPlainTextDOS 

und speichere mit
Zitat:
tm.ActiveDocument.SaveAs "C:\xxx", tmFormatDocument

xxx = Pfad und Name der Datei

funktioniert das?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 16.01.2011 14:31:34 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Zitat:
ANSI-Zeichen: x = "„-”-Ž-™-š-á"
BM macht daraus: ?-?-?-?-?-á
Immer noch korrekt?

Code:
x  = "„-”-Ž-™-š-á"
MsgBox x
Die Zeichen werden bei mir von BM korrekt dargestellt


Dateianhänge:
pm.jpg
pm.jpg [ 16.47 KiB | 956-mal betrachtet ]
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 16.01.2011 19:42:36 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Zitat:
Die Zeichen werden bei mir von BM korrekt dargestellt

Bei mir auch.

Das ist aber nicht das Problem.

Zitat:
Wenn eine Textdatei im DOS-Format von BM zum Bearbeiten geöffnet wird, werden die Umlaute in andere Zeichen geändert.

Wenn du eine Datei mit der Zeichenfolge öffnest, dann werden die Zeichen verändert.


Code:
x  = "„-”-Ž-™-š-á"
msgbox x

open "d:\test.txt" for output as #1
  print #1, x
close
'Die Zeichen werden noch richtig in die Datei geschrieben.

open "d:\test.txt" for input as #1
while not eof(1)
   line input #1, y
wend
close

msgbox y
print y


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 11:49:29 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Das scheinen Zeichen zu sein, die BM nicht verarbeiten kann, weil sie einen zu hohen ANSI-Wert haben. Die Darstellung auf dem Bildschirm ist davon scheinbar nicht betroffen.Beim Speichern des Scriptes kommt auch die Meldung dass es als UNICODE gespeichert werden soll.

Ich habe mal ein kleines Programm geschrieben, das folgende Ergebnisse mit dem Zeichen "Ž" hatte:

@OemToAnsi$("Ž") wird als "Ä" angezeigt
@AnsiToOem$("Ž") wird als "Z" angezeigt

scheint also auch bei anderen Programmiersprachen ein Problem (?) zu sein

Das folgende Script zeigt für alle Zeichen den Wert 822

***************
x = "„-”-Ž-™-š-á"

i = 1

Do While i < len(x)
y = y & " " & asc(Left(x, i))
i = i + 1
loop

MsgBox y

*******************


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 14:41:29 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Zitat:
Das scheinen Zeichen zu sein, die BM nicht verarbeiten kann, weil sie einen zu hohen ANSI-Wert haben.

Es handelt sich nur um normale Ansi-Zeichen bis 255.
Zitat:
scheint also auch bei anderen Programmiersprachen ein Problem (?) zu sein

Andere Programmiersprachen verändern eine Textdatei nicht beim einlesen.

Zitat:
Das folgende Script zeigt für alle Zeichen den Wert 822

Weil es immer nur den Ascii-Wert des ersten Zeichens anzeigt.

Hier ein korrigiertes Script:
Code:
x = "„-”-Ž-™-š-á"

i = 1

Do While i < len(x)
y = y & " " & asc(mid(x, i, 1))
print left(x,i)
i = i + 1
loop

print y


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 15:04:20 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Das Problem betrifft anscheinend nur die Ansi Zeichen 128 bis 159.

Code:
'Alle Zeichen von 128 bis 255
x  = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
msgbox x

open "d:\test.txt" for output as #1
  print #1, x
close
'Die Zeichen werden noch richtig in die Datei geschrieben.

open "d:\test.txt" for input as #1
while not eof(1)
   line input #1, y
wend
close

msgbox y
Print "Original:"
print x
Print "von BM verändert:"
print y


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 15:28:34 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
OK, dann muss Softmaker das Geheimnis erklären.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 17:02:41 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1463
Nur mal nebenbei bemerkt:
BM ist eine Skript-Sprache und dient in erster Linie zur Automation des SMO. Darüber hinaus kann BM noch einiges andere, so dass damit im Grunde auch beliebige andere Objekte unter Windows angesprochen werden können.
Man sollte aber doch die Einschränkungen beachten, die sich aus dem eben Gesagten ergeben: BM ist nicht ein genuines Werkzeug zur Bearbeitung von Dateien. Es ist daher auch nicht sonderlich erstaunlich, dass es Probleme mit Codepages, erweitertem Zeichensatz usw. gibt. Das gilt im übrigen nicht nur für BM, sondern kommt auch in den besten "Familien" vor, ich erwähne nur mal: C und Null-String, Postscript und Umlaute ...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 18:16:12 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Zitat:
Man sollte aber doch die Einschränkungen beachten, die sich aus dem eben Gesagten ergeben: BM ist nicht ein genuines Werkzeug zur Bearbeitung von Dateien. Es ist daher auch nicht sonderlich erstaunlich, dass es Probleme mit Codepages, erweitertem Zeichensatz usw. gibt. Das gilt im übrigen nicht nur für BM, sondern kommt auch in den besten "Familien" vor, ich erwähne nur mal: C und Null-String, Postscript und Umlaute ...
Stimme deinen Ausführungen zu.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 19:25:19 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
@Panosis

Es geht nur um normale Textdateien.
Aufgefallen ist mir das Problem hier.

@Dewes
Probleme mit den Umlauten hattest du offentsichtlich auch schon.
viewtopic.php?f=115&t=9261


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 17.01.2011 22:56:07 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.04.2008 23:02:12
Beiträge: 1463
Zitat:
Es geht nur um normale Textdateien.


Es gibt keine normalen Textdateien, nur unterschiedlich codierte.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fehler in BM
BeitragVerfasst: 21.01.2011 18:15:47 
Offline
SoftMaker Team
SoftMaker Team

Registriert: 03.12.2003 14:32:06
Beiträge: 2977
Das Problem ist viel einfacher zu reproduzieren:
Code:
sub x
   dim i as integer
   dim s as string

   s = ""
   for i = 127 to 255
      s = s + chr(i)
   next i

   open "c:\txtout" for output as #1
   print #1, s
   close #1

end sub

Schon beim Schreiben werden viele Zeichen zwischen 128 und 159 durch Fragezeichen ersetzt. Der Grund dafür ist, dass diese Zeichen im ANSI-Zeichensatz gar nicht definiert sind. Allerdings finde ich schon, dass die Zeichen gespeichert werden sollten und habe einen entsprechenden Bericht an die Programmierer rausgegeben.

_________________
Martin Kotulla
SoftMaker Software GmbH


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de