Midlet Tool

cybermog

Aktives Mitglied
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 ?
 
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.
 
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 ?
 
Zuletzt bearbeitet:
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.
 
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 ??
 
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.
 
Es geht mit substring und string.length(). Allerdings ergibt die zweite Zeile von unten einen Fehler:

Java:
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()));
 
Java:
 String[][] replace = new String[5][2] {{"xxx", stringA},
                                                              {"yyy", stringB}, 
                                                              {"zzz", stringC }, 
                                                              {"aaa", stringD }, 
                                                              {"bbb" , stringE }};

Was ist an dieser Initialisierung falsch ?
 
Allerdings ergibt die zweite Zeile von unten einen Fehler:

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? ...

Java:
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.

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

Entweder so:

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

oder so:

Java:
 String[][] replace = new String[5][2];
 
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.
 
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ß
 
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).
 
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 ?
 
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.
 
So ist es. Auf dem Zielrechner müssen zur Installation Umgebungsvariablen für die Pfade von Java und WTK angegeben werden.

Es gibt noch:

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

aber das führt nicht zu javac.
 
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?
 

Zurück
Oben