Hallo,
warum antwortet mir denn keiner?
a) Excel-Automation über JScript (nicht Javascript) ist hier nicht so oft
das Thema.b) eine Codewüste, nahezu ohne Kommentare.
Eine einzige Funktion, die über einen einigermaßen anständigen Header
verfügt: getFiles()
Diese Codewüste soll nun der potentielle Helfer durchforsten, den Ablauf
nachvollziehen, um herauszufinden, wo was schiefgeht.Das sind sehr schlechte Voraussetzungen, Hilfe zu finden.
a) Debug-Strategien, wie von Deus Figendi vorgeschlagen, anwenden, um das
Problem einzugrenzenb) Code kommentieren. Nein, das ist *kein* selbsterklärender Code.
c) Code vereinfachen, ein Beispiel:
function convertAnzahlToObject( anz )
{
anz = anz.substr( 17, 3 );
// in anz steht nun der gewünschte Teilstringout_anz = anz;
// dieser wurde in die Variable out_anz umkopiert, ...return out_anz;
// nur damit der Inhalt dieser Variablen zurückgegeben werden kann};
>
> 1. Vereinfachung:
> Umkopieren in eine Variable, die sonst nicht genutzt wird, weglassen:
>
> ~~~javascript
function convertAnzahlToObject( anz )
> {
> anz = anz.substr( 17, 3 );
> // in anz steht nun der gewünschte Teilstring
>
> return anz;
> // Gib diesen zurück
>
> };
- Schritt:
Überschreiben des Übergabeparameters weglassen, gleich gewünschten
Teilstring zurückgeben:
function convertAnzahlToObject( anz )
{
return anz.substr( 17, 3 );
};
>
Ok hast recht, könnte man vereinfachter schreiben. Aber ich selbst muss es nachvollziehen können. Aber werde es berücksichtigen. Danke.
> Aber:
> Was ist "anz"?
> Warum ist dies ein Objekt (siehe Funktionsname)?
> Woher kommen die magischen Zahlen 17 und 3?
>
Die „magischen Zahlen“ sind folgende. Die Stellen 1 – 14 sind der eigentliche Hauptteil des Gesamtteiles. Ich habe durch das Auslesen der Exceltabelle die Anzahl an das Gesamtteil drangehangen. Und das Gesamtteil in der Excelliste sieht so aus: A123-45678-000-00 -> insgesamt also 17 Stellen. Also muss ich aber der 17. Stelle (da wo die Anzahl drangehangen wurde) die Anzahl auslesen oder? Und da es max. 3 Stellen geben kann (Anzahl max. 999) habe ich ab der 17. Stelle die 3 nachfolgenden Stellen genommen. Oder was ist daran falsch?
> Alles in allem eine Funktion, deren Sinn der Leser ohne Hintergrundwissen nicht versteht. Vermittle in Kommentaren (hier im Headerkommentar) dieses Wissen. Reduziere unnötige Komplexität durch Entfernen überflüssigen Codes (hier zwei von drei Codezeilen).
>
Ok werde versuchen, mal den Code zu kommentieren.
>
> Freundliche Grüße
>
> Vinzenz