Das geht zwar, aber schön ist es nicht gerade (man kann
InitializationCell->True unten auch weglassen, aber so ist es klarer):
args1 = {x, y};
(* Falls die "Notebook-DumpSave-Initialization-Cell" schon geladen ist,
überspringe die Berechnung:*)
If[DownValues[sophisticatedExpensiveResult] === {},
Print["test 1"];
sophisticatedExpensiveResult[a_, b_] := {{a, b}}
];
If[ !ValueQ[r1], Print["test 2"];
r1 = sophisticatedExpensiveResult[Sequence @@ args1]];
SetAttributes[DumpSaveToCell, HoldFirst];
DumpSaveToCell[zuspeichern_List] := Block[{tmp,nb=EvaluationNotebook[],nf},
SetDirectory[$TemporaryDirectory]; DumpSave["aName.mx", zuspeichern];
tmp = Import["aName.mx", "Binary"]; DeleteFile["aName.mx"];
NotebookWrite[nb,"LESEZEICHEN","Text",CellTags->"Lesezeichen"];
SelectionMove[nb,Before,Notebook];
NotebookWrite[nb,
Cell[StringJoin["Import[#,\"MX\"]&@StringToStream@ExportString[",
ToString[tmp], ",\"Binary\"]"], "Input",
InitializationCell -> True, CellTags -> "DumpSaveCell"]];
nf= NotebookFind[nb,"Lesezeichen",All,CellTags];
SelectionMove[nb,After,Cell];
NotebookDelete[nb];
ResetDirectory[]];
If[NotebookFind[EvaluationNotebook[], "DumpSaveCell", All, CellTags] ===
$Failed,
DumpSaveToCell[{sophisticatedExpensiveResult, args1, r1}]];
r1
(* ****************************************************************** *)
Rolf Mertig
GluonVision GmbH, Berlin
http://www.gluonvision.com
Am 18.05.2011 13:51, schrieb Nowak Robert:
Na ja,
hilft schon, ist aber nicht besser als "manuell"
wenn man das Dump z.B. in das Notebook selbst dranbasteln könnte ok.
LG Robert