Seite 1 von 2

ConvertFromAnsi mit Purebasic

Verfasst: 23.02.2018 20:38
von funkheld
Hallo, guten Tag.
Ich empfange von einem TCP-Server Daten die ich umwaneln muss.
WEr kann mir das unten bitte einmal in Purebasic umwandeln ?

Code: Alles auswählen

Function fnConvertFromAnsi:String(text:String)
	Local str:String = ""
	Local count:Int = Len(text)
	For Local k:Int = 0 Until count
		If(text[k] >= 192 And text[k] <= 255)
			str:+Chr(text[k] - 192 + 1040)
		ElseIf(text[k] = 168) 'Ё
			str:+Chr(1025)
		ElseIf(text[k] = 184) 'ё
			str:+Chr(1105)
		Else
			str:+Chr(text[k])
		EndIf
	Next
	'DebugLog "'" + str + "'"
	Return str
End Function
Danke.
Gruss

Re: ConvertFromAnsi mit Purebasic

Verfasst: 23.02.2018 21:17
von mk-soft
Das erledigt doch Purebasic für dich

Code: Alles auswählen

text.s = PeekS(*ReceiveBuffer, -1, #PB_Ascii)

Re: ConvertFromAnsi mit Purebasic

Verfasst: 23.02.2018 21:18
von RSBasic
Ich frage mich, mit welcher Programmiersprache du schreibst? Anscheinend verwendest du mal die Sprache und mal PB. Ist es nicht sinnvoller, eine Sprache für die Anwendungsentwicklung zu nehmen? Sonst musst du nicht ständig von A nach B konvertieren.

Re: ConvertFromAnsi mit Purebasic

Verfasst: 23.02.2018 22:28
von funkheld
Danke für die Indfo.
Das wusste ich nicht.

Gruss

Re: ConvertFromAnsi mit Purebasic

Verfasst: 24.02.2018 01:56
von Andre
Das hilft dir vielleicht nicht direkt, aber für das Umwandeln von Sonderzeichen in übliche deutsche Buchstaben habe ich im englischen Forum selbst einen Thread laufen und dort heute auch eine eigene Lösung zum Konvertieren gepostet: http://www.purebasic.fr/english/viewtop ... 13&t=52782

Re: ConvertFromAnsi mit Purebasic

Verfasst: 24.02.2018 13:17
von funkheld
Danke.
Werden bei Ansi immer 2 Byte für einen Buchstaben genommen?

Gruss

Re: ConvertFromAnsi mit Purebasic

Verfasst: 24.02.2018 15:07
von mk-soft
nein

Ansi (8 Bit) ist der erweiterte Zeichensatz von Ascii (7 Bit).

Darum gibt es auch verschiedene Code-Tabellen für die verschiedenen Ländern
Unicode hat zwei Byte.

Link: https://de.wikipedia.org/wiki/ANSI-Zeichencode

Re: ConvertFromAnsi mit Purebasic

Verfasst: 24.02.2018 16:08
von _JON_
MultiByteToWideChar_() sollte doch mit den Sonderzeichen klar kommen.
Musst nur die Codepage der Quell kennen

Re: ConvertFromAnsi mit Purebasic

Verfasst: 24.02.2018 16:59
von Bisonte
_JON_ hat geschrieben:MultiByteToWideChar_() sollte doch mit den Sonderzeichen klar kommen.
Musst nur die Codepage der Quell kennen
Für Windows mag das gelten... Aber ich nehme bei Andre an, das soll auch auf Mac und Linux laufen...

Re: ConvertFromAnsi mit Purebasic

Verfasst: 25.02.2018 00:55
von Andre
Bisonte hat geschrieben:
_JON_ hat geschrieben:MultiByteToWideChar_() sollte doch mit den Sonderzeichen klar kommen.
Musst nur die Codepage der Quell kennen
Für Windows mag das gelten... Aber ich nehme bei Andre an, das soll auch auf Mac und Linux laufen...
So ist es - auf Windows und MacOS :allright:
(und daher nach Möglichkeit ohnehin ohne API-Befehle)