# Midlet Tool



## cybermog (13. Okt 2010)

Hallo,

ich würde mich als Einsteiger bezeichnen. Mit ein kleinwenig Erfahrung in GUI Programmierung mit Netbeans. Nun möchte ich eine Applikation schreiben die Programme produziert mit jeweils unterschiedlichen Werten bestimmter Variablen. Die Programme sind Midlets. Der source code des zu verfielfältigenden Programm liegt vor. Wie geht man da am besten vor ?


----------



## The_S (13. Okt 2010)

Sourcecode einlesen, Variablen verändern, geänderter Sourcecode in eine Datei zurückschreiben, Kommandozeilenbefehl zum Compilieren absetzen - fertig. Hab ich auch so ähnlich für MIDlets die in unterschiedlichen Auflösungen, ... vorliegen sollen so gemacht.

Du könntest natürlich auch Build-Tools wie bspw. Ant verwenden.


----------



## cybermog (14. Okt 2010)

Ich mache gerade eine Ausbildung zum Softwareentwickler. In der Schule gab es noch kein OO-Programmieren. Deshalb bringe ich mir das so bei.
Eine Frage. Es soll der Name der main-Klasse entsprechend ausgetauscht werden. Muss ich dazu auch den code einlesen usw. oder gibt es da eine geschicktere Möglichkeit ?


----------



## The_S (14. Okt 2010)

In deinem Code wird wohl public class ABC stehen. Das musst du natürlich ändern


----------



## cybermog (14. Okt 2010)

Moment.. Von vorne.
Es soll ein Tool geschrieben werden, dass einen Code um ein (Kern-) Midlet legt. Also eine Hülle. Der Code des Kernmidlets kann nicht verändert werden. Die Hülle erhällt nun Werte, die zum Teil über eine Oberfläche eingegeben werden und zum anderen aus der jad des Kernmidlets gelesen wird. Dann wird das zu einem neuen Midlet gepackt. Die Main Klasse der Hülle soll so heissen wie in der jad des Kernmidlets angegeben ist. Vieleicht beschäftige ich mich zunächst mit Datei Einselen usw.


----------



## The_S (14. Okt 2010)

wäre sinnvoller.


----------



## cybermog (15. Okt 2010)

Ich möchte ein Wort aus dem Text kopieren. Nach dem zweiten Komma und einem weiteren Leerzeichen. Muss ich dazu mit indexOf das zweite Komma finden und dann jedes weitere Zeichen auf Leerzeichen prüfen ??


----------



## The_S (15. Okt 2010)

zweimal indexOf für das Komma und dann noch einmal indexOf für das Leerzeichen.


----------



## cybermog (15. Okt 2010)

Das Leerzeichen ist ja das nächste und darauf beginnt das Wort. Muss ich jedes Zeichen prüfen um das Ende vom Wort zu finden ?


----------



## The_S (15. Okt 2010)

Nee, wie gesagt: zweimal indexOf fürs zweite Komma, und einmal indexOf fürs Leerzeichen. Du weißt doch scheinbar wie man indexOf verwendet ... warum willst du es fürs Komma verwenden aber nicht fürs Leerzeichen? Alternativ würde es auch ein regulärer Ausdruck tun - oder die Aufteilung (je nach dem was du vorhast) mit split.


----------



## cybermog (15. Okt 2010)

Das Wort geht bis zum Ende der Zeile. IndexOf findet den Zeilenumbruch "/n" nicht.


----------



## The_S (15. Okt 2010)

\n ist auch was anderes als ein Leerzeichen. Evtl. wäre dann doch reguläre Ausdrücke etwas für dich.


----------



## cybermog (15. Okt 2010)

Es geht mit substring und string.length(). Allerdings ergibt die zweite Zeile von unten einen Fehler:


```
index = line.indexOf(",");
index2 = line.indexOf(",", index+1);

testLabel1.setText( name1 = line.substring(index+3, index2));
testLabel2.setText( name2 = line.substring(index2+2, line.length()));
```


----------



## cybermog (18. Okt 2010)

```
String[][] replace = new String[5][2] {{"xxx", stringA},
                                                              {"yyy", stringB}, 
                                                              {"zzz", stringC }, 
                                                              {"aaa", stringD }, 
                                                              {"bbb" , stringE }};
```

Was ist an dieser Initialisierung falsch ?


----------



## The_S (18. Okt 2010)

cybermog hat gesagt.:


> Allerdings ergibt die zweite Zeile von unten einen Fehler:





cybermog hat gesagt.:


> Was ist an dieser Initialisierung falsch ?



Generell hilfst du uns dir zu helfen, wenn du ein wenig ausführlicher den Fehler beschreibst. Was für eine Fehlermeldung kommt? Wann kommt sie? Welche Daten schickst du in deine Verarbeitung? Wie kommst du darauf, dass die Initialisierung falsch ist? Welche Meldung gibt der Compiler? ...



cybermog hat gesagt.:


> ```
> testLabel1.setText( name1 = line.substring(index+3, index2));
> ```



Einen Fehler bekommst du, wenn index2, index+3 oder beide größer als line sind, oder wenn index+3>index2 ist.



cybermog hat gesagt.:


> ```
> String[][] replace = new String[5][2] {{"xxx", stringA},
> {"yyy", stringB},
> {"zzz", stringC },
> ...



Entweder so:


```
String[][] replace = {{"xxx", stringA},
                                                              {"yyy", stringB}, 
                                                              {"zzz", stringC }, 
                                                              {"aaa", stringD }, 
                                                              {"bbb" , stringE }};
```

oder so:


```
String[][] replace = new String[5][2];
```


----------



## cybermog (18. Okt 2010)

Danke. Wie kann ich ein jar-Archiv in ein temp Verzeichniss entpacken ? Möglichst nicht über Kommandozeile.


----------



## The_S (18. Okt 2010)

Es gibt Zip- und JarStreams. Damit kannste das.


----------



## cybermog (24. Okt 2010)

Frage eines Programmierers mit C Erfahrung: Wie weit sollte man so ein Programm in Methoden oder Klassen aufteilen ? Datei öffnen, String holen usw. Wie gesagt, OO kommt erst noch.


----------



## Firephoenix (24. Okt 2010)

Eine Klasse sollte man immer wie ein Themenbasiertes Paket vorstellen.

Am Beispiel eines Taschenrechners:
-Für die Grafikausgabe könnte eine eigene Klasse herhalten
-Ebenso könnte eine Eigene Klasse für die Eingaben geschrieben werden
-Die Rechenmethoden werden wiederum in einer extra-Klasse untergebracht


Und z.B. bei den Rechenmethoden könnte man die Methoden wieder nach Unterproblemen darstellen, z.B.:
Plus, Minus, Mal, Geteilt... etc


Wie klein man das ganze zerteilt ist am Ende jedem selbst überlassen - die 2 extremfälle wären:
1. Man packt alles in eine Klasse
2. Man unterteilt das Projekt in so kleine Probleme wie möglich und lagert jedes davon in eine Klasse aus.

Das ein Terminkalender-Tool in einem Textblock am Stück nicht schön aussieht sollte wohl ebenso klar sein, wie man in einem Taschenrechner nichts mehr findet wenn man jede Methode in eine Klasse auslagert 
Gruß


----------



## The_S (25. Okt 2010)

Dafür bekommst du mit der Zeit schon ein gutes Gefühl. Eine Methode sollte so klein wie möglich sein - zum einen um die Wiederverwendbarkeit zu erhöhen, zum anderen weil sie sich so ein Stück weit auch selbst dokumentiert. Klassen umfassen zusammenhängenden Code oder anders ausgedrückt: Wenn sie instanziiert werden, sollten sie ein Objekt repräsentieren, das mit einem aus der realen Welt vergleichbar ist. Also wenn du eine Klasse "Person" hättest, wären darin vermutlich Werte wie Name und Alter zu finden. Andere Klassen könnten Motor mit PS, Drehmoment und Hubraum sein, oder eine Klasse, die ein Sudoku löst mit einer solve-Methode (die dann vermutlich noch in kleinere Methoden aufgeteilt werden kann).


----------



## cybermog (12. Nov 2010)

Ich möchte noch einige Funktionen hinzufügen.

Die Pfade zum Kompiler, jar und preverify, usw. sollen dynamisch ermittelt werden. Damit das Programm auf anderen Rechnen läuft. Wie geht man da vor ?


----------



## The_S (12. Nov 2010)

Die Pfade müssen irgendwo hinterlegt werden, wo du sie auch wieder auslesen kannst. Eine Anlaufstelle wäre bspw. als Umgebungsvariablen. Aber das dürfte wohl auf fremden Rechnern kaum der Fall sein.


----------



## cybermog (16. Nov 2010)

So ist es. Auf dem Zielrechner müssen zur Installation Umgebungsvariablen für die Pfade von Java und WTK angegeben werden.

Es gibt noch:


```
System.getProperties().getProperty("sun.boot.library.path");
```

aber das führt nicht zu javac.


----------



## cybermog (16. Nov 2010)

Wie kann ich die Kompatibilität zu anderen Betriebssystemen sicherstellen, mal abgesehen von den Pfaden und / bzw. \ ?


----------



## mjdv (16. Nov 2010)

Keine libs benutzen die es nicht für alle Plattformen gibt. Ansosnten solte es eigentlich alles aus der Standrad API überall geben.

Oder wie meinste das jetzt?


----------

