Mal was für die bessere Hälfte --> Eine Einkaufsliste

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

dragonius
Beiträge: 50
Registriert: 27.09.2009, 09:14

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von dragonius » 22.11.2009, 14:34

Hallo Thomas,

warum überascht? Wenn es vom Prinzip her geht, muß es auch hinzukriegen sein. Zwar fange ich gerade erst mit PHP an, das schreckt mich aber nicht davon ab die Lösung zu finden. An manchen Stellen brauche ich bloß mal einen Schubs in die richtige Richtung, weil ich mich mal wieder festgefahren habe und den Wald vor lauter Bäumen nicht sehe. :D :D

Und "TATAAAA"!! Da isse:

Code: Alles auswählen

<?
$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);
?>
Wobei dieser Teil

Code: Alles auswählen

$cleardat = fopen("c:\daten\einkaufszettel.txt","w");
fclose($cleardat);
eigentlich nur dazu dient, die Datei wieder zu leeren. Und das schönste: Auf dem Weg zur Lösung habe ich noch eine Menge "Funktionen" gefunden, die es sich lohnt mal auszuprobieren und mit rumzuspielen. :D :D
OK, was fehlt ist jegliche Art von Fehlerabfrage, z.B. ob der Druck erfolgreich war. Also ohne Netz und doppelten Boden. Aber das finde ich auch noch raus.

Damit ist die Funktion "Einkaufszettel" fertig und ich darf den Touch für die Küche bestellen. Ist doch auch was!! (Wehe wenn die Frau das nun nicht nutzt!!! :twisted: )

Gruß
Lutz

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von tsa » 22.11.2009, 14:58

Cool! Und das mit dem anfänglichen DLL-Fehler hat sich also erledigt. Was war's denn?
Ach ja, dann fehlen mir noch Deine Makros - oder soll ich alles selber programmieren? :P

Gruss
Thomas

dragonius
Beiträge: 50
Registriert: 27.09.2009, 09:14

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von dragonius » 22.11.2009, 16:32

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.
Dateianhänge
php_printer.zip
Die richtige php_printer.dll
(11.4 KiB) 103-mal heruntergeladen

dragonius
Beiträge: 50
Registriert: 27.09.2009, 09:14

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von dragonius » 22.11.2009, 17:26

So: Weiter gehts mit dem Feintuning: Damit die Einkaufsliste auch vor dem Ausdruck zur Verfügung steht und somit weiterverarbeitet werden kann habe ich das Makro aufgeteilt.
Beim wechsel aus der Auswahlansicht in die Übersicht (über den "zurück"->Button) wird jetzt die alte Datei gelöscht und neu geschrieben.

MAKROEinkLiInfo

Code: Alles auswählen

**! ============================================================
**! OBJEKT MAKROEinkLiInfo
**! ============================================================
**! OBJEKT-TYP              : Makro
**! BEZEICHNUNG             : MAKROEinkLiInfo
**! STARTWERT               : 
**! ------------------------------------------------------------
**! AUSFÜHRUNGSINTERVALL    : nein
**! AUSFÜHRUNG BEI EINGABE  : nein
**! AUSFÜHRUNG BEI ÄNDERUNG : nein
**! 
**! 
**! ============================================================
**! VARIABLENDEFINITIONEN
**! ============================================================
**! NAME                TYP                 STARTWERT
**! ------------------------------------------------------------


**alte Datei löschen
<?
$cleardat = fopen("c:\daten\einkaufszettel.txt","w");
fclose($cleardat);
?>
**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
       SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Schnitzel               O")
  ENDEWENN
  WENN LebFlHack=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Hack                    O")
  ENDEWENN
  WENN LebFlAufsch=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Aufschnitt              O")
  ENDEWENN
  WENN LebFlHahn=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Geflügel                O")
  ENDEWENN
  WENN LebFlMett=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "frisches Mett           O")
  ENDEWENN
  WENN LebFlKottlet=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kotletts                O")
  ENDEWENN
  WENN LebFlKasslerbraten=1
  DANN
       SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kasslerbraten           O")
  ENDEWENN
  WENN LebFlKasslerkotlett=1
  DANN
       SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Kasslerkotlett          O")
  ENDEWENN
  WENN LebFlBraten=1
  DANN
       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
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Apfelsaft               O")
  ENDEWENN
  WENN LebGeOSaft=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "O-Saft                  O")
  ENDEWENN
  WENN LebGeSaft=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "div. Säfte              O")
  ENDEWENN
  WENN LebGeBier=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Bier                    O")
  ENDEWENN
  WENN LebGeSelter=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Selter                  O")
  ENDEWENN
  WENN LebGeKleine=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "kl. Flaschen (0,5l)     O")
  ENDEWENN
  WENN LebGeBrause=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Brause (gemischt)       O")
  ENDEWENN
  WENN LebGeCola=1
  DANN
       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
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Butter                  O")
  ENDEWENN

  WENN LebMiMagarine=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Magarine                O")
  ENDEWENN
  WENN LebMiJoguhrt=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Joghurt                 O")
  ENDEWENN
  WENN LebMiKaese=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Käse                    O")
  ENDEWENN
  WENN LebMiMilch=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Milch                   O")
  ENDEWENN
  WENN LebMiSahne=1
  DANN
      SCHREIBEDATEI("c:\daten\einkaufszettel.txt", "Sahne (saure)           O")
  ENDEWENN

ENDEWENN
Der Ausruck und reset der Liste erfolgt dann über das Objekt OBJLebDruck

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                                 


<?
$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);
?>

LebFlSchnitzel ausschalten
LebFlHack ausschalten
LebFlAufsch ausschalten
LebFlHahn ausschalten
LebFlMett ausschalten
LebFlKottlet ausschalten
LebFlKasslerbraten ausschalten
LebFlKasslerkotlett ausschalten
LebFlBraten ausschalten
LebGeASaft ausschalten
LebGeOSaft ausschalten
LebGeSaft ausschalten
LebGeBier ausschalten
LebGeSelter ausschalten
LebGeKleine ausschalten
LebGeBRause ausschalten
LebGeAlk ausschalten
LebGeCola ausschalten
LebMiButter ausschalten
LebMiMagarine ausschalten
LebMiJoguhrt ausschalten
LebMiKaese ausschalten
LebMiMilch ausschalten
LebMiSahne ausschalten
So hält sich der Pflegeaufwand dennoch in Grenzen und die Datei steht zur weiteren Bearbeitung in der jewals letzten Version zur Verfügung.

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von tsa » 22.11.2009, 18:02

...und dem Problem eines Verlustes im Absturzfall kannst Du mit
SICHERN("LebFlSchnitzel,LebFlHack,LebFlAufsch,LebFlHahn,LebFlMett,...") begegnen.
Im *INIT - Makro lädst Du die Objektzustände einfach wieder rein...

Gruss
Thomas

gerald_d
Beiträge: 132
Registriert: 13.07.2008, 13:06

Re: Mal was für die bessere Hälfte --> Eine Einkaufsliste

Beitrag von gerald_d » 27.06.2010, 21:48

Hallo!

Echt eine SUPER idee....findet meine Frau!!

Ich kann jetzt versuchen das ganze in Homeputer CL nachzubauen!

lg
Gerald

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“