German Problem mit Text Datei und Umlauten

rainerohl

Member
Licensed User
Longtime User
Problem mit Text Datei und Umlauten (gelöst)

Hallo User,
ich erstelle auf einem Windows7 Rechner Textdateien die auch Umlaute enthalten. Die Dateien werden auf einem Server geladen.
Mit meinem Samsung TAB hole ich mir nun diese Dateien vom Server und
bearbeite sie. Anschließend kommen sie wieder auf den Server und werden wiederum vom Windows Rechner geholt und gelesen.
Das ganze functioniert aber nicht weil Windows die Dateien im ANSI Format schreibt und liest währent der Samsung die Dateien im UFT-8 Format
bearbeitet.
Kurz gefragt wie kann ich Textdateien in "Basic4android" im ANSI Code lesen
und auch wieder zurück schreiben?
mit freundlichen Grüßen Rainer
 
Last edited:

Heinz

Active Member
Licensed User
Longtime User
Mit was erstellst du die Textdateien in Windows ?
Am einfachsten wäre es doch, die Datei(en) im
normalen Texteditor zu laden und als UTF-8 zu
speichern, dann auf Server laden und mit dem
Galaxy verarbeiten + zurück speichern und dann
wieder als ANSI speichern, daß man sie in der
Windowsanwendung wieder lesen kann.
 

rainerohl

Member
Licensed User
Longtime User
Auf meinem Windows Rechner habe ich ein Visual Basic Programm
geschrieben das mir meine Acces Tabelle in Text Dateien zum
synchronisieren mit dem Samsung erstellt.
Das ganze ist meine Fahrschulverwaltung. Fahrstunden im Auto
eintragen und im Büro Pc übertragen.
Mfg Rainer
 

Heinz

Active Member
Licensed User
Longtime User
Wenn es nur im heimischen WLAN laufen soll,
könnte man sich überlegen, ob man mit VB
(sofern es UTF-8 - Strings unterstützt) die
einzelnen Datensätze direkt via TCP übertragen
soll. Also den TCP-Server macht das VB-Programm
und den TCP-Clienten das Samsung mit B4A.

Da kannst du mal in den Sourcecode von der
B4A_Bridge reinschauen. Wenn man Dateien
senden kann, ist es mit Strings ja umso leichter.

Das mit einer netzwerkfähigen Datenbank hat
sich ja dann ereldigt, da ja nur einer zugreift.

Da du ja die Datei als konvertierte .csv Datei
auch hast, wäre evtl. zu überlegen, ob man so
ein Datenbankprogramm evtl. mit der Desktop
Version von Basic4ppc machen kann. Die Funktionen
LoadCsv() und SaveCsv() sind ja einfach zu handhaben.
Und ein schönes Grid (Table) ist ja auch dabei.

Müßte man mal ausprobieren. Da man ja statt der
Datei die einzelnen Strings sendet, hat man das
UTF-8 Format evtl. ganz alleine vom Tisch.
 
Last edited:

Heinz

Active Member
Licensed User
Longtime User
PS: Wenn dein Samsung Bluetooth unterstützt,
könntest du es auch via BT machen. Soviel ich
weiß, gibt es ja Bibliotheken für RS232 für
VB. Somit braucht es kein weiteres Projekt
in Basic4ppc.
Bei Windows siehst du ja in deiner BT-Umgebung
unter Eigenschaften die virtuellen COM-Ports für
Ein - und Ausgang. Man muß halt nur dafür Sorge tragen
(z.B. über einen groß genug dimensionierten Puffer),
daß keine Bytes verloren gehen.

Geht ganz genauso wie bei einer normalen seriellen
Schnittstelle.
 

klaus

Expert
Licensed User
Longtime User
Versuche mal das beiliegende Testprogramm.
Es liest eine Testdatei, die im ANSI Format geschpeichert wurde, und wandelt den Text in UTF-8 um, das Umwandeln von '€' wird separat gemacht.

Beste Grüsse.
 

Attachments

  • TestCharSet.zip
    5.7 KB · Views: 422

Heinz

Active Member
Licensed User
Longtime User
Schreibe mal, wieviele Spalten du in der Tabelle
brauchst und deren Beschriftungen.

Wills jetzt selber mal testen.
 

rainerohl

Member
Licensed User
Longtime User
Hallo Heinz, ich weiss jetzt gerade nicht was du meinst und azsprobieren willst.

mit freundlichen Grüßen Rainer
 

rainerohl

Member
Licensed User
Longtime User
Hallo Klaus,
dein Testprogramm ist super. Meine Frage:
Geht es auch anders herum also eine UTF-8 Datei in ANSI umwandeln und
zurückschreiben??
wenn ja mit welchen Parameter?
zb:.
TextWriter1.Initialize2(File.OpenInput(File.DirAssets,"Test.txt"),"????????")

Gruß Rainer
 

klaus

Expert
Licensed User
Longtime User
Sollte so gehen. habe es aber nicht versucht.
TextWriter1.Initialize2(File.OpenInput(File.DirAss ets,"Test.txt"),"ISO-8859_1")

Du musst aber noch das "€" Zeichne umwandeln mit:
Text1 = Text1.Replace("€",Chr(128))

Beste Grüsse.
 
Last edited:

Heinz

Active Member
Licensed User
Longtime User
Wollte nur die Feldnamen deiner Tabelle wissen
also die Struktur : Name, Stunden,Preis o.ä.

Dann bräuchte ich nichts umzuschreiben, wenn
ich dir evtl. ein Programm machen kann.

Hab mir schon was kleines in PureBasic gebastelt,
weil ich es auch selber brauchen kann. Es ist viel,
nur eine kleine Datenbank mit editierbarem Listview
und eine Serverfunktion integriert, damit man den
Inhalt des Listview über TCP senden kann.

Das Programm für mein Tablet sieht so aus :

'Activity module
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim Serversocket1 As ServerSocket
Dim Socket1 As Socket
Dim Timer1 As Timer
Dim input1 As InputStream
Dim output1 As OutputStream

End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.

Dim Button1 As Button
Dim ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("1")
Button1.Text = "Test"
Listview1.Clear
If FirstTime Then
Timer1.Initialize("Timer1", 200)
End If
If ServerSocket1.IsInitialized = False Then
ServerSocket1.Initialize(6832, "ServerSocket1")
End If
ToastMessageShow("Meine IP : " & ServerSocket1.GetMyIP, True)
End Sub

Sub ServerSocket1_NewConnection(Successfull As Boolean, NewSocket As Socket)
If Successfull Then
Socket1 = NewSocket
Timer1.Enabled = True
Input1 = Socket1.InputStream
ToastMessageShow("Connected !", True)
Else
Msgbox(LastException.Message, "Error connecting !")
End If
ServerSocket1.Listen
End Sub

Sub Activity_Resume
ServerSocket1.Listen
End Sub

Sub Activity_Pause (UserClosed As Boolean)
If UserClosed Then
Timer1.Enabled = False
Socket1.Close
ServerSocket1.Close
End If
End Sub

Sub Button1_Click

End Sub


Sub Timer1_Tick
If Input1.BytesAvailable > 0 Then
Timer1.Enabled = False
Dim Buffer(100) As Byte
Dim raf As RandomAccessFile
Dim text As String
raf.Initialize3(Buffer, True)
Input1.ReadBytes(Buffer, 0, 100)
text = BytesToString(Buffer, 0, 100, "UTF-8")
Listview1.AddSingleLine(text)
End If
End Sub

Geht aber irgendwie nicht. Als Layout braucht es
nur ein Listview und einen Button.
Kannst du mal drüber schauen, wo es haken könnte ?
 
Last edited:

rainerohl

Member
Licensed User
Longtime User
So das Problem mit den Umlauten ist mit dem Programmbeispiel von
Klaus gelöst.
Viele Dank an Klaus
mit freundlichen Grüßen Rainer
 
Top