German Fahrlehrer braucht Hilfe

rainerohl

Member
Licensed User
Longtime User
Hallo User, möchte mich kurz vorstellen.
Ich bin Fahrlehre (mit einer Fahrschule in NRW).Ich habe vor ca.3 Jahren mein
Fahrschuleprogramm für WinMobile in VB.net geschrieben. Ist vielleicht etwas umständlich programmiert (bin nämlich kein Profi) aber es hat all die Jahre gut functioniert.
Nun bin ich auf das Galaxy TAB umgestiegen und muss alles neu programmieren. Da meine Zeit begrenzt ist suche ich im Forum nach etwas Hilfe. Ich habe mir vor einer woche Basic4 gekauft und bin sehr begeistert.
Nun habe ich aber als Newbie ein paar konkrete Fragen:

1.
Dim Test() as String ---- ist ja ein array aus strings

Dim Test2 as List ---- ist auch Array

was ist der Unterschied???
2.
wie kann ich in Strings deutsche Umlaute anzeigen???

3.
ich arbeite mit Text Dateien weil ich diese auf meinem Win7 PC verarbeite.
zb:
Type Pers (Name As String,Vorname As String,Ort As String)
Schueler (200) as Pers
ST,S as String
List1 as List

List1 = File.ReadList(File.DirRootExternal, "SchuelerDB.txt")

for i to 200
S = List1.Get(i)
ST = Regex.Split
schueler(i).Name = ST(1)
schueler(i).Vorname=ST(3)
schueler(i).Ort=ST(5)
next

mit der Function ST = Regex.Split(";",S) kann ich den String super
aufschlüsseln.

Wie kann ich aber wenn die Daten geändert werden das File "SchuelerDB.txt") wieder zurück schreiben???

Ich würde mich über euere Hilfe im Forum sehr freuen.
Da ich weis das ich immer sehr umständlichen Code schreibe sagt mir mal
euere Meinung dazu.

mit freundlichen Grüßen rainerohl
 

Vidar

Member
Licensed User
Longtime User
Hallo Rainer,

zu deiner 1. Frage:

Ja, die Datenstrukturen ähneln sich stark, du wirst dich aber wundern. B4A macht da meist keine Arrays draus, sondern Lists. Eine Liste ist eine wichtige Datenstruktur, die auf unterschiedliche Art und Weise implementiert werden kann (einfach verkettet, doppelt verkettet etc...). Den Umgang mit Listen findest du hier sehr gut dokumentiert:

Basic4android - Collections (Core)

Zu deiner 2. Frage:

Die kannst du eigentlich ganz einfach so benutzen, die Umlaute. Falls Probleme auftreten sollten (zum Beispiel beim Speichern in Text-Dateien), bearbeite alles immer in Unicode. Da kann eigentlich nichts anbrennen.

Zu Drittens :)

File.WriteList (File.DirRootExternal, "SchuelerDB.txt", List1)

Du hast ja, wenn du die Liste einliest, den kompletten Inhalt deiner Datenbank in der Struktur Liste. Wenn du da nun durchgehst und z.B. Sachen änderst, baue dir den String mit delimiter neu (Wie z.b. dein ';') und setze die Zeile der Liste wieder auf eben diesen String :) Dann speichere alles mit dem oben genannten Befehl wieder ab.

Übrigens: durch die Liste solltest du nicht mit festen Werten gehen. Das führt gerne mal zu einem OutOfBounds-Fehler. Besser ist:

For i = 0 To List1.Size - 1
....
Next

Hoffe, das war soweit alles einigermaßen verständlich :D
Solltest du weiterhin Probleme haben, kannst du diese gerne posten. Auch wenn ich dir Teile deines Codes übersetzen soll, bin ich gerne bereit, dies zu tun :)

Lieben Gruß
~Michael
 

klaus

Expert
Licensed User
Longtime User
Hallo Rainer,
Zuerst schon mal willkommen in der Basic4Android 'Familie'.

Ein Paar zusätzliche Informationen.
Frage 1.
Deutsche Collections Hilfe Datei.

Frage 2.
Wie sind Deine Textdateien gespeichert ?
Mit Excel oder Texteditor, dann könnten Probleme auftreten wenn Du die Daten auf dem PC mit ANSI Code gespeichert hast. Dann musst Du entweder die Dateien mit Unicode speichern oder das Laden und Speichern der Daten selbst machen.

Weitere Fragen beantworten wir gerne.
Bei Fragen ist es für die Helfer am Besten wenn Du Dein ganzes Projekt schickst. Dann sieht man genau was, wo und wie gemacht wurde. Öfters liegt ein Fehler an einer anderen Stelle als man ursprünglich gedacht hat.

Beste Grüsse.
 

rainerohl

Member
Licensed User
Longtime User
Hallo Michael erstmal vielen Dank für die schnelle Anwort.
Ich freue mich das ich hier einen netten Ansprechpartner gefunden habe.

auf meine Frage in bezug auf die Umlaute meinte ich, dass die Text Dateien
die von VB.net auf dem Win7 PC erstellt wurden in meinen Listen nicht
korrekt dargestellt werden (ohne Umlaute).
Dann würde ich noch gerne wissen wie ich die Files auf der CF-Card schreiben
kann.
Zum Schluss noch eine Grundsatzfrage:
Ich arbeite in meinem Programm mit Menues
-Hautmenue
-Schülerkartei
-Tagesnachweis
-Kasse
Nun habe ich mir gedacht das ich für jedes Menue ein Panel mit den entsprechenden Steuerelemente erstelle und mit der Panel.Visible funktion
auf die entsprechen Seiten umschalte.
Ist das Programm technischin Ordnung oder muss ich anders vorgehen.
In VB.net habe ich immer mit Forms gearbeitet.
das warst erstmal. Wenn ich zuviel frage sag es mir einfach.
mfg Rainer
 

rainerohl

Member
Licensed User
Longtime User
Hallo Klaus auch die vielen Dank.
wenn ich meinen ersten Code zusammen gebastelt habe werde ich
das File mal zur begutachtung posten.
zu den Umlauten: die werden im Win7 PC mit meiner Fahrschulprogramm
(geschrieben in VB.net) erzeugt. Muss ich vieleicht dort was ändern.
bis dann und mfg Rainer
 

Vidar

Member
Licensed User
Longtime User
Hey Rainer :)

Zuviele Fragen kann man garnicht stellen! (Meine Meinung) Ich habe innerhalb weniger Tage nur durch lesen der Fragen von anderen in diesem Forum, gelernt, wie Basic4Android "tickt" :D

Zu deiner Frage mit den falsch dargestellten Zeichen: Klaus schrieb ja bereits, woran das liegt. Was du tun könntest, wäre, die Falsch dargestellten Zeichen durch ein String.Replace zu ersetzen und damit zu arbeiten. Ich hatte dasselbe Problem bei Dateinamen. Ich habe mir einfach eine Funktion geschrieben, die mir ungültige Zeichen aus einem String entfernt. Folgend der Code:

B4X:
Sub gueltigerDateiname(Dateiname As String) As String
   Dateiname = Dateiname.Replace("\","")
   Dateiname = Dateiname.Replace("/","")
   Dateiname = Dateiname.Replace(":","")
   Dateiname = Dateiname.Replace("*","")
   Dateiname = Dateiname.Replace("?","")
   Dateiname = Dateiname.Replace("<","")
   Dateiname = Dateiname.Replace(">","")
   Dateiname = Dateiname.Replace("|","")
   Return Dateiname
End Sub

Vielleicht nicht die schönste Methode, aber sie funktioniert :D

Um dir die Frage des Speicherns auf einem externen Medium zu beantworten, möchte ich dich auf folgendes, sehr informatives, Tutorial von Erel verweisen.

http://www.b4x.com/forum/basic4android-getting-started-tutorials/6690-text-files.html

Weiterhin zu deiner Frage mit den Panels: Wenn du etwas Platz in deiner Anwendung hast (vom Layout her) wäre ein Tabhost ideal für dich! Diese Komponente stellt einen Pageview (So kenn ich das aus Delphi) dar. Auch hierzu ein sehr schönes Tutorial von Klaus:

http://www.b4x.com/forum/german-tutorials/7469-tabhost-tutorial.html

Hoffe, das hilft dir weiter!
Fragen sind immer willkommen :)

Gutes gelingen!
~Michael
 

klaus

Expert
Licensed User
Longtime User
Hallo Ihr Beiden.

Das Datei Tutorial gibt es auch auf Deutsch.

Für die Umlaute gibt es eine Funktion mit BytesToString in der man mit CodePages arbeiten kann.

Generell wenn man mit mehreren Seiten arbeiten will gibt es eben mehrere Methoden. Ich mache es fast immer mit Buttons unten im Bildschirm, und zeige dann die verschiedenen Panels an. Die Hauptseite gebe Ich auch in ein Panel. Wenn man ein Panel mit Visible = True anzeigt muss man das Hautpanel unsichtbar machen. Die Buttons lege Ich in ein Panel im Hauptlayout an. Für jedes Panel eine eigene Layout Datei. Die Panels können je nach Funktion die unteren Buttons verdecken oder sichtbar lassen.
Ich bevorzuge seit langer Zeit Buttons vor Menues. Mit Buttons hat man eine bessere Übersicht. Das TabHost View finde Ich unpraktisch, die Tabs sind oben und die Finger verdecken den Bildschirm, und Ich finde sie viel zu gross.
Das ist aber Alles Geschmacksache.

Beste Grüsse.
 
Last edited:

Heinz

Active Member
Licensed User
Longtime User
Hab auch so ein Preislisten - Programm
(hab ich mit Purebasic geschrieben) auf
meinem PC. Die ändere ich auch auf meinem
PC. Dann mache ich einfach den windowseigenen
Editor auf und lade die Textdatei. Anschließend
als UTF-8 abspeichern und auf die SD-Karte
kopieren. Schon habe ich meine Umlaute auch
für Android.
 

klaus

Expert
Licensed User
Longtime User
Hallo Heinz,

Es hängt ja nach Anwendung ab.
- Wenn man Dateien auf beiden Geräten benutzen will, PC und Smartphone, ist eine systematische Umwandlung umständlich.
- Wenn man von Excel *.csv Dateien speichern will, gibt es keine Möglichkeit, mit UTF-8 zu speichern.
In beiden Fällen müsste man dann jedes mal die Datei umwandeln.
Mit CodePage Lesen und Speichern und etwas mehr Code kann man das lösen.
In B4PPC hatte Ich ein Programm geschrieben das gleiche Dateien mit einem Programm auf dem PC teilen musste ohne Umwandlung.

Beste Grüsse.
 
Top