Hallo Christy!
Gern geschehen. Und nochmal Sorry wegen dem Fehler. War nach dem Jahreswechsel wohl noch unkonzentriert - ist immer schlecht falschen Code zu posten.
Also die beiden identischen Blöcke sollte da nur einmal stehen. Einen davon bitte löschen.
Das mit dem overflow ist klar. Wollte da besonders Speicherplatz sparend arbeiten. Hatte das dann aber beim Code nicht beachtet. Und dabei hatte ich extra noch nach der Anzahl der Zeilen gefragt. peinlich. Also mit dem integer kannst du jetzt bis zu 32000 überprüfen.
Da würde ich aber die Zeile 119 , das ist die hier
loschen(0) = loschen(0) + 1
einfach rausnehmen. Die nutzt der Code eh nicht mehr und da tritt der Überlauf auf (die Zahl dürfte max. 255 sein). Damit könnte loschen auch auf Byte stehen und die Zahl wäre (fast) egal. Außerdem braucht der Code dann nicht soviel Speicherplatz.
Zu den Parametern:
Da es 3 verschiedene Typen gibt und jeder was anderes machen soll (pBUKr ersetzt und löscht in C, die 5 spezielen ersetzen in D und der Rest ersetzt in C), wollte ich die für die spätere Bearbeitung separat auflisten - ergibt dann später nur 3 Schleifendurchläufe, hier die mit k. Dafür habe ich das Array parameter angelegt. Das Array ist zweidimensional (zwei Werte in der Klammer) - und stellt also eine Art Tabelle da. Der erste Wert ist die Zeile, zweiter Wert die Spalte. Die Spalten und Zeilen gehen dabei vom Index 0 los. Die "Tabelle" ist dann so aufgebaut, dass in Zeile 1 die Namen der Parameter mit pBUKRS stehen, in Zeile 2 die Werte zum Ersetzten dazu, Zeile 5 die Namen der 5 speziellen, Zeile 6 deren Werte und in Zeile 3 die NAmen der restlichen und in 4 die Werte dazu. Die Eintragungen gehen immer beim Index 1 los. Um bei den späteren Durchläufen Zeit zu sparen schreibe unter dem Index 0 immer die Anzahl der jeweiligen Parameter (das war der Fehler beim array loschen). Normalerweise würde ich das Array nur auf die Länge anpassen aber da war ich ehrlich gesagt zu faul. Deshalb ist die Arraylänge die Anzahl aller Parameter auf dem Blatt. Um bei den Schleifen nicht unnötige Durchläufe zu haben, lasse ich dort nicht die Arraylänge sondern nur die Anzahl beim INdex 0 durchlaufen - deshalb die jeweilige Parameteranzahl beim INDEX 0. Hoffe das war halbwegs verständlich. :-) Wenn nicht einfach nochmal fragen.
Soll ich eigentlich beim Code ein paar Kommentare mit einbauen? Dann erkennt man gleich was gemacht wird und braucht nicht noch groß suchen.
Für dein Folgeproblem würde ich anders vorgehen. Ich würde einfach noch bei parameter die Zeilen 7 und 8 für die "parameter" aus Blatt 2 aufnehmen - voher beim Dimensionieren aber angeben, dass es 8 Zeilen gibt, Dort die Werte einlesen, aber nur wenn es ein x gibt - also nur die zum Löschen. In der Schleife unten für ich dann k bis definierne und bei k = 4 , spalte auf 1 setzen. Und bei den Durchläufen einfach noch für k = 4 was ergänzen. Soweit zur Theorie.
Ist dann wesentlich kürzer und eleganter als bei einer zusätzliche Schleife.
Bastel den Code gleich mal um und poste ihn.
Gruß und bis später
|