Datei ist doch Ascii Codiert

Anfängerfragen zum Programmieren mit PureBasic.
Onkel-Till
Beiträge: 22
Registriert: 08.03.2007 17:27
Wohnort: Hamburg

Datei ist doch Ascii Codiert

Beitrag von Onkel-Till »

Guten Morgen,

ich habe scheinbar ein fieses Brett vorm Kopp: ich habe hier eine Datei
die aus einer Warenwirtschaft generiert wird (normalerweise werden die
Zeichen an einen Drucker ausgegeben).

Das File ist laut Softwarehaus Ascii codiert. Nur leider scheint das nciht
zustimmen denn wenn ich das File mit ReadString(0,#PB_Ascii)
auslese bekomme ich statt der Umlaute andere Zeichen in der Debugconsole

Entweder ist es viel zufrüh für mich oder aber das File ist doch nicht Ascii
codiert...hat jemand eine Idee?
Benutzeravatar
Hartmut
Beiträge: 56
Registriert: 15.09.2006 22:22
Kontaktdaten:

Beitrag von Hartmut »

Moin moin,

lade die Datei doch mal in einen Editor deiner Wahl (im zweifelsfalle sogar den einfachen Windows-Editor) und schau nach, was da wirklich drinsteht.

Vielleicht hilft dir auch die Purebasicfunktion ReadStringFormat(#Datei)

Wenn du an eine druckaufbereitete Datei herangehen musst, um Daten abzuziehen, ist das leider ohnehin keine "stabile" Schnittstelle.
Im nächsten Release ändert das Softwarehaus vielleicht das Format des Ausdrucks und du fällst mit deiner Schnittstelle auf den Bauch.

Gibts es keine "Standard"-Datenexportschnittstellen ?

Viele Grüße

Hartmut
Onkel-Till
Beiträge: 22
Registriert: 08.03.2007 17:27
Wohnort: Hamburg

Beitrag von Onkel-Till »

ja ich kenne das problem mit "stabiler" Schnittstelle nur zu gut :(
im Moment bleibt mir leider nichts übrig als die Daten so auszulesen.

Nun das mit dem einfachem Editor "ansehen" habe ich gemacht, interessant!
Denn wenn ich zb mit dem einfachen Texteditir des TotalCommanders mir
das File ansehe und auf Ascii Codierung gehe kann ich mir die umlaute ansehen.

Sprich es muss also Ascii codiert sein....

aber nun die Frage wieso werden dann in der DebugConsole diese nicht
angezeigt? Bei einem simplen:

Code: Alles auswählen

  If ReadFile(0, "quittung.txt")  
    While Eof(0) = 0           
      Debug ReadString(0,#PB_Ascii)    
    Wend
    CloseFile(0)             
  Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf

Ich befürchte das ich mal wieder total das Brett vorm Kopf habe :oops:
Benutzeravatar
Hartmut
Beiträge: 56
Registriert: 15.09.2006 22:22
Kontaktdaten:

Beitrag von Hartmut »

Moin,

hast du den OpenFile im Beispielcode der Einfachheit halber weggelassen ?
Was für einen Wert bringt der ?

Ansonsten kann ich mit einem Dateischnipsel das gerne mal hier bei mir probieren.

Viele Grüße

Hartmut
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> hast du den OpenFile im Beispielcode der Einfachheit halber weggelassen ?

er verwendet ReadFile, was hier absolut die richtige wahl ist...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Onkel-Till
Beiträge: 22
Registriert: 08.03.2007 17:27
Wohnort: Hamburg

Beitrag von Onkel-Till »

wirklich sehr merkwürdiges verhalten ich habe mir das nun in verschiedenen editoren angesehen und es scheint wirklich ein Ascii codiertes File
zusein.
mein problem ist nur, scheinbar liest pb mit dem befehl
readstring(0,#pb_ascii) nicht "in" ascii ?!?!

ich bin verwirrter als vorher :(
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wenn du es im notepad öffnest, und dann mal auf "speichern unter" gehst, welches format zeigt er unten an?

wenn da nicht ANSI steht, ist es eine andere codierung.

btw: das Flag #PB_Ascii benötigst du nurdann, wenn du eine ANSI-datei von einer Unicode-exe aus lesen willst.
wenn du dein prog nicht als Unicode compilierst, benutzt er automatisch ANSI.

aber der service deiner softwarefirma besteht möglicherweise nicht aus programmierern.
die sagen dir zwar "jo, das is ascii", aber meinen damit wahrscheinlich,
dass es "plain text" ist, im gegensatz zu "binary".
"plain text" kann aber eben auch in UTF-8 oder Unicode gespeichert sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Hartmut
Beiträge: 56
Registriert: 15.09.2006 22:22
Kontaktdaten:

Beitrag von Hartmut »

Hallo Tillmann,

danke für die Beispieldatei !
Ich denke es liegt daran, dass die Datei zum Öffnen garnicht erst gefunden wird.
Probier mal diesen Code hier - der funktioniert bei mir und zeigt brav Zeile für Zeile deiner Datei an :)

Code: Alles auswählen

Pattern$="Textdatei (*.txt)|*.txt"
File$ = OpenFileRequester("Bitte Datei wählen", "*.txt", Pattern$, 0)
If File$

   a =  ReadFile(0, File$) 
   Debug a

   If a 
      While Eof(0) = 0           
             Debug ReadString(0)   
      Wend
      CloseFile(0)             
   Else
      MessageRequester("Information "+file$,"Konnte Datei nicht öffnen!")
   EndIf

EndIf
Viele Grüße

Hartmut
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ich denke es liegt daran, dass die Datei zum Öffnen garnicht erst gefunden wird.
tschuldige mal, kann ja irgendwie nich sein, denn dann müßte ja der MsgReq aufgehen....
Tills beispielcode ist schon in ordnung....

teste du doch mal, inwieweit das bei dir funktioniert, wenn du bei ReadString das #PB_Ascii-Flag einsetzt!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Hartmut
Beiträge: 56
Registriert: 15.09.2006 22:22
Kontaktdaten:

Beitrag von Hartmut »

tschuldige mal, kann ja irgendwie nich sein, denn dann müßte ja der MsgReq aufgehen....
@kaeru
Stimmt ... der Requester geht ja auch auf :)
und wenn man dann die Datei (im richtigen Pfad) auswählt, funktioniert
das zeilenweise Einlesen und die Ausgabe über das Debuggerfenster (zumindest hier bei mir).

@Till
Einfach mal den Dateinamen voll durchqualifizieren, dann sollte es auch ohne den Requester funktionieren.

Wenns das nicht sein sollte, stehe ich wahrscheinlich gerade auf dem Schlauch :oops: - welche PB-Version verwendest du ?

Viele Grüße

Hartmut
Antworten