Romero: Weiter Spalte anhängen

Beitrag lesen

Ich muss euch noch mal fragen.

Ich weiß jetzt wenigstens, an welcher Stelle ich die Anzahl anbringen muss.
Aber da macht er halt was anderes, als erwünscht. Nun wollt ich euch fragen, wo nun mein Fehler liegt?

Das ist der Script dazu:

		function init()  
		{  
		…  
			out = checkIfInFileList( list, infile, anzahl );  
  
			//--> Dateien und Infile vergleichen, sowie deren Anzahl anhängen  
  
			save( out );};  
  
		//-----------------------------  
		function checkIfInFileList( list, infile, anzahl )  
		{  
			var i,temp;  
			var out = [];  
  
			for( i = 0; i < infile.length; i++ ) { out = out.concat( findInList( infile[i] ) ); }  
  
			return out;  
  
			function findInList( s )  
			{  
				var i = 0;  
				var out = [];  
				for( i = 0; i < list.length && anzahl.length; i++ )  
				{  
					if( s == list[i].n.join("_").substr( 0, 14 ) )  
					{  
						list[i].anzahl = list[i].n.join("") + "_" + anzahl;  
  
						out.push( list[i] );  
					}  
				}  
  
				if( out.length == 0 ) return [s];  
				return out;  
                        }  
                };  
  
		//----------------------------------------------------------------------------  
		//-- gefundene Materialien in einer Liste speichern und zur Kontrolle ausgeben  
		//----------------------------------------------------------------------------  
		function save( list )  
		{  
			var out = [];  
  
			for( var i = 0; i < list.length; i++ )  
			{  
				if( list[i].n )  
				{  
					out.push( list[i].n.join("") + ".nc" );  
					msg( i + " " + list[i].n + " // " + list[i].anzahl + " - " + list[i].p + "<br>" );  
				}  
				else  
				{  
					out.push( "! datei nicht gefunden: '" + list[i] + "'" );  
					msg( i + " " + "! datei nicht gefunden '" + list[i] + "' !<br>" );  
                        	}  
			}  
  
			//document.getElementById( "STL_Meldungen_Überschreiben" ).innerHTML = '<p class="STL_Meldungen_Überschreiben">Wollen Sie die Stückliste Überschreiben? <input type="button" value="Bestätigen" class="STL_Meldungen_Button" onclick="saveFile( locations.workFolder1 + locations.outfile1, out.join("") );"></input> <input type="button" value="Abbrechen" class="STL_Meldungen_Button" onclick="Überschreiben_Abbrechen()"></input>';  
  
			var infile_vorhanden = loadFile( locations.workFolder_STL + locations.outfile1 ).replace(/\r\n/g,"\n").split("\n");  
  
			vergleich( out , infile_vorhanden )  
  
			//-------------------------------------------------------------------------------  
			//-- Ausgabedatei und vorhandene Stückliste vergleichen und Unterschiede ausgeben  
			//-------------------------------------------------------------------------------  
			function vergleich( infile_neu , infile_vorhanden )  
			{  
				for( var i = 0; i < infile_neu.length && infile_vorhanden.length; i++ )  
				{  
					infile_neu[i] = infile_neu[i].substr( 0 , 15 );  
					infile_vorhanden[i] = infile_vorhanden[i].substr( 0 , 15 );  
				}  
  
				infile_neu.sort();  
				infile_vorhanden.sort();  
  
				if( infile_neu.length == infile_vorhanden.length )  
				{  
					msg( "<br><b>Keine Unterschiede gefunden." );  
				}  
				else  
				{  
					for( var i = 0; i < infile_neu.length && infile_vorhanden.length; i++ )  
					{  
						if( infile_neu[i] != infile_vorhanden[i] )  
						{  
							msg( "<br>Unterschiede: " + infile_vorhanden[i] + " --> " + infile_neu[i] );  
						}  
					}  
				}  
  
				return;  
  
			};  
  
			//saveFile( locations.workFolder1 + locations.outfile1, out.join("\r\n") );  
		};

Infile ist das, was der Script aus der Excelliste ausliest. List ist das, was er in einem bestimmten Ordner findet (und da den aktuellsten Wert). Anzahl ist die Anzahl passend zur Infile.

Bei function checkIfInFileList( list, infile, anzahl ) wird also die infile mit der list verglichen und dann in out gespeichert. Nun wollt ich die anzahl direkt dahinter schreiben (siehe oben). Wenn ich die Variante wie oben nehme, dann gibt er function save( list ) folgendes aus:

0 E258_70600_000,C_20b // E258_70600_000C_20b_55,88,,,,,,,,,,,,,,,,,,,120,,,,,,,,,,,,,,,,,,,,,,,,,,,, - O:/SCHNITT_IGES_2003_02_25/A320/F
1 E258_70601_000,D_20b // E258_70601_000D_20b_55,88,,,,,,,,,,,,,,,,,,,120,,,,,,,,,,,,,,,,,,,,,,,,,,,, - O:/SCHNITT_IGES_2003_02_25/A320/F
2 E258_70602_000,C_20b // E258_70602_000C_20b_55,88,,,,,,,,,,,,,,,,,,,120,,,,,,,,,,,,,,,,,,,,,,,,,,,, - O:/SCHNITT_IGES_2003_02_25/A320/F

Wenn ich aber die

function checkIfInFileList( list, infile, anzahl )  
		{for( i = 0; i < list.length && anzahl.length; i++ )  
				{  
					if( s == list[i].n.join("_").substr( 0, 14 ) )  
					{  
						list[i].anzahl = list[i].n.join("") + "_" + anzahl[i]; // der geänderte Ausdruck  
  
						out.push( list[i] );  
					}  
				}}

abändere, dann bringt die function save( list ) folgendes:

0 E258_70600_000,C_20b // E258_70600_000C_20b_undefined - O:/SCHNITT_IGES_2003_02_25/A320/F
1 E258_70601_000,D_20b // E258_70601_000D_20b_undefined - O:/SCHNITT_IGES_2003_02_25/A320/F
2 E258_70602_000,C_20b // E258_70602_000C_20b_undefined - O:/SCHNITT_IGES_2003_02_25/A320/F

Was mache ich da falsch? Zumal anzahl ich wunderbar mittels einer Schleife auslesen kann und das Script mir auch für jede Zeile einen entsprechenden Wert zurück gibt.

LG Romero