Hallo Michaela,
> So, aber hier nun eine neue Frage (wobei ich nicht weiss, ob ich es einfach zu kompliziert mache. Vielleicht sollte
> ich mein Programm so lassen, wie es ist, und nicht versuchen, es "sch?n" zu machen! ?hm, lange
> Rede - kurzer Sinn?) :
Sie machen es sich kompliziert zu einfach. Wenn man eine Tabelle ausschreiben will, dann schreibt man eine Tabelle aus
und exportiert nicht zeilenweise. Dann denkt man noch daran, dass man sich seine eigenen Files
nicht kaputtschreibt, bildet den Namen automatisch nach Kuska und erhält (ein wirklicher freak würde z.B. auch das
Directory waehlbar machen):
In[58]:=
Remove[schaareStreams];
schaareStreams[i_Integer, filen_String] := Module[{o, l0, fn, f1},
SetDirectory["C:\output of Gehirnzelle\Abteilung_skrot"];
l0 = Table[{o, o o}, {o, 1, i}];
f1 = If[StringMatchQ[filen, "*.txt"], filen,
filen <> ".txt"];
fn = f1;
While[Length[FileNames[fn]] != 0,
fn = f1 <> "_" <> ToString[Unique[]]
];
wstr = OpenWrite[fn];
Write[wstr,
OutputForm[
TableForm[l0,
TableHeadings -> {None, {"Erste Spalte", "Zweite Spalte"}}]]];
Close[wstr]
] /; i > 0 && StringLength[filen] > 0
In[60]:=
schaareStreams[3, "hello"]
Out[60]=
"hello.txt_$4"
In[25]:=
Directory[]
Out[25]=
"C:\\output of Gehirnzelle\\Abteilung_skrot"
In[61]:=
!! hello.txt_$4
>From In[61]:=
Erste Spalte Zweite Spalte
1 1
2 4
3 9
Man beachte, dass schaareStreams den Filenamen, den es schliesslich gewählt hat, zurückgibt.
Natürlich braucht man die Zwischenvariable l0 nicht und kann die ganze Berechnung gleich im output unterbringen.
Man kann schaareStreams ebensogut einen Funktionsnamen uebergeben und den Namen eines Wertespeichers,
auf dem die Funktion ausgefuehrt werden soll, dazu noch FileName, DirName, FormatterFunktion (das ist jetzt
OutputForm[TableForm[...]]); dann wuerde langsam eine brauchbare Funktion draus.
Gruss
Udo.