Das "DLL-Problem" war ein Versions-Problem. Hat mich Dein Beitrag drauf gebracht. Ich habe die richtige für die PHP-Version 5.1.x hier mal angehängt.
Die MAKROS? Das ganze steckt tatsächlich ganz simpel in einem Makro:
Code: Alles auswählen
**! ============================================================
**! OBJEKT OBJLebDruck
**! ============================================================
**! OBJEKT-TYP : Schalter
**! BEZEICHNUNG : Ausdruck
**! STARTWERT : aus
**! ------------------------------------------------------------
**! AUSFÜHRUNGSINTERVALL : nein
**! AUSFÜHRUNG BEI EINGABE : nein
**! AUSFÜHRUNG BEI ÄNDERUNG : ja
**!
**!
**! ============================================================
**! VARIABLENDEFINITIONEN
**! ============================================================
**! NAME TYP STARTWERT
**! ------------------------------------------------------------
**! akDat Zeichen
**Kopf in Datei schreiben
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "**************************")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "***** Einkaufzettel ******")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "**************************")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
**Überschrift FLEISCH ausdrucken
WENN LebFlSchnitzel=1
ODER LebFlHack=1
ODER LebFlAufsch=1
ODER LebFlHahn=1
ODER LebFlMett=1
ODER LebFlKottlet=1
Oder LebFlKasslerkotlett=1
ODER LebFlKasslerbraten=1
ODER LebFlBraten=1
DANN
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "Fleisch:")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "--------")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
** Fleischsorten ausdrucken
WENN LebFlSchnitzel=1
DANN
LebFlSchnitzel ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Schnitzel O")
ENDEWENN
WENN LebFlHack=1
DANN
LebFlHack ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Hack O")
ENDEWENN
WENN LebFlAufsch=1
DANN
LebFlAufsch ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Aufschnitt O")
ENDEWENN
WENN LebFlHahn=1
DANN
LebFlHahn ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Geflügel O")
ENDEWENN
WENN LebFlMett=1
DANN
LebFlMett ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "frisches Mett O")
ENDEWENN
WENN LebFlKottlet=1
DANN
LebFlKottlet ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kotletts O")
ENDEWENN
WENN LebFlKasslerbraten=1
DANN
LebFlKasslerbraten ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kasslerbraten O")
ENDEWENN
WENN LebFlKasslerkotlett=1
DANN
LebFlKasslerkotlett ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kasslerkotlett O")
ENDEWENN
WENN LebFlBraten=1
DANN
LebFlBraten ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Braten (div.) O")
ENDEWENN
ENDEWENN
**Überschrift Getränke ausdrucken
WENN LebGeAlk=1
ODER LebGeASaft=1
ODER LebGeOSaft=1
ODER LebGeSaft=1
ODER LebGeBier=1
ODER LebGeSelter=1
ODER LebGeKleine=1
ODER LebGeBrause=1
ODER LebGeCola=1
DANN
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "Getränke:")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "--------")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
** Getränke ausdrucken
WENN LebGeASaft=1
DANN
LebGeASaft ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Apfelsaft O")
ENDEWENN
WENN LebGeOSaft=1
DANN
LebGeOSaft ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "O-Saft O")
ENDEWENN
WENN LebGeSaft=1
DANN
LebGeSaft ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "div. Säfte O")
ENDEWENN
WENN LebGeBier=1
DANN
LebGeBier ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Bier O")
ENDEWENN
WENN LebGeSelter=1
DANN
LebGeSelter ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Selter O")
ENDEWENN
WENN LebGeKleine=1
DANN
LebGeKleine ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "kl. Flaschen (0,5l) O")
ENDEWENN
WENN LebGeBrause=1
DANN
LebGeBRause ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Brause (gemischt) O")
ENDEWENN
WENN LebGeCola=1
DANN
LebGeCola ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Cola/Fanta/Sprite O")
ENDEWENN
ENDEWENN
**Überschrift Milchprodukte ausdrucken
WENN LebMiButter=1
ODER LebMiMagarine=1
ODER LebMiJoguhrt=1
ODER LebMiKaese=1
ODER LebMiMilch=1
ODER LebMiSahne=1
DANN
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "Milchprodukte:")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", "--------------")
SCHREIBEDATEI("C:\daten\einkaufszettel.txt", " ")
** Milchprodukte ausdrucken
WENN LebMiButter=1
DANN
LebMiButter ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Butter O")
ENDEWENN
WENN LebMiMagarine=1
DANN
LebMiMagarine ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Magarine O")
ENDEWENN
WENN LebMiJoguhrt=1
DANN
LebMiJoguhrt ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Joghurt O")
ENDEWENN
WENN LebMiKaese=1
DANN
LebMiKaese ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Käse O")
ENDEWENN
WENN LebMiMilch=1
DANN
LebMiMilch ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Milch O")
ENDEWENN
WENN LebMiSahne=1
DANN
LebMiSahne ausschalten
SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Sahne (saure) O")
ENDEWENN
ENDEWENN
<?
$ekl = file_get_contents("C:\daten\einkaufszettel.txt");
$ausdruck = printer_open();
printer_write($ausdruck, $ekl);
printer_close($ausdruck);
$cleardat = fopen("c:\daten\einkaufszettel.txt","w");
fclose($cleardat);
?>
Dafür gibts natürlich eine ganze Menge Objekte. Eben für jedes Produkt eins als Typ "Schalter" mit dem Startwert "aus". Da die aktuelle Einkaufsliste tatsächlich erst beim Ausdruck zusammengestellt wird, bedarf es nur dieses eine MAKRO. Birgt natürlich auch Nachteile: Bei einem Absturz sind die Eingaben natürlich hinüber und eine neuerliche Anforderung des Vorstandes ("Ich kann ja gar nicht auf einen Blick sehen was ich schon auf der Liste habe...." GRMPF....) läßt sich nun schwer umsetzen, wenn man sich nicht die Arbeit machen will das MonsterMakro ein zweites mal zu pflegen und daraus dann eine Vorschau zu bilden. Aber da habe ich auch schon eine Idee. Dazu müsste man das Makro etwas abändern und aufteilen und dann auf die Schalter verlagern. So das die TXT bei jeder Änderung der Liste neu erstellt wird. Diese könnte man dann auslesen und auf der Übersicht anzeigen lassen. Der Ausdruck wird dann seperat gesteuert. Hmm, das multipliziert die MAKRO-Pflege dann allerdings um ein vielfaches.... Mal sehen was mir da noch einfällt. Das muß auch einfacher gehen.
Hier wäre tatsächlich ein Tool hilfreich, welches so einfache Objekte kopieren und neu importieren kann. So das man auf einen Schlag eine Anzahl gleichartiger Objekte nebst enthaltener MAKROS erstellen kann.