home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / tricks / clipper / clipfunc.prg next >
Encoding:
Text File  |  1992-01-07  |  18.3 KB  |  531 lines

  1. ************************************************************
  2. *                                                          *
  3. *       Sprache   :  Clipper Summer '87                    *
  4. *                                                          *
  5. *       Funktion  :  CHECKDBF                              *
  6. *                    Prüfung, ob externe Änderung in DBF   *
  7. *                                                          *
  8. *       Syntax    :  CHECKDBF( <cDateiname>, <cAttribut> ) *
  9. *                                                          *
  10. *       Parameter :  <cDateiname> übergibt den Namen der   *
  11. *                    Datenbank ohne Extension              *
  12. *                    <cAttr> = "L" liest DOS-Informationen *
  13. *                    aus einer Memory-Datei und vergleicht *
  14. *                    diese mit derzeitigem Zustand         *
  15. *                    <cAttr> = "S" speichert DOS-Infos     *
  16. *                    in Memory-Datei                       *
  17. *                                                          *
  18. *       Rückgabe  :  <cAttr> = "L" gibt Rückgabe .F. wenn  *
  19. *                    Datenbank extern geändert, sonst .T.  *
  20. *                    <cAttr> = "S" gibt Rückgabe .T. wenn  *
  21. *                    Memory-Datei geschrieben wurde, sonst *
  22. *                    Rückgabe .F.                          *
  23. *                                                          *
  24. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  25. *                                                          *
  26. ************************************************************
  27.  
  28.  FUNCTION CHECKDBF
  29.  
  30.    PARAMETERS Alias, Attribut
  31.  
  32.    alidbf = Alias + ".DBF"
  33.    alimem = Alias + ".MEM"
  34.  
  35.    dbf_anz = ADIR( alidbf )
  36.    Declare dbf_name[ dbf_anz ]
  37.    Declare dbf_byte[ dbf_anz ]
  38.    Declare dbf_datu[ dbf_anz ]
  39.    Declare dbf_zeit[ dbf_anz ]
  40.  
  41.    Do Case
  42.  
  43.       Case Attribut = "L"
  44.  
  45.         * - Prüfung, ob Datenbank seit letztmaligem
  46.         * - Programmeinsatz EXTERN geändert wurde
  47.  
  48.         If .Not. File( alimem )
  49.            * - Memory-Datei nicht vorhanden,
  50.            * - ... mutwillige Zerstörung möglich ...
  51.            Rueck = .F.
  52.            Tone( 100, 4 )
  53.         Else
  54.            Restore From &alimem Additive
  55.            Adir( alidbf, dbf_name, dbf_byte, ;
  56.                          dbf_datu, dbf_zeit )
  57.  
  58.            If v_name <> dbf_name[ dbf_anz ] ;
  59.               .Or. v_byte <> dbf_byte[ dbf_anz ] ;
  60.               .Or. v_datu <> dbf_datu[ dbf_anz ] ;
  61.               .Or. v_zeit <> dbf_zeit[ dbf_anz ]
  62.               * - Datenbank EXTERN geändert !
  63.               Rueck = .F.
  64.               Tone( 100, 4 )
  65.            Else
  66.               * - Keine externe Änderung erfolgt !
  67.               * - DOS-Informationen identisch ...
  68.               Rueck = .T.
  69.               Tone( 800, 1 )
  70.            Endif
  71.            Erase &alimem   && Mem-Datei wird gelöscht,
  72.                            && um einen Programmabsturz
  73.                            && später abzufangen
  74.         Endif
  75.  
  76.       Case Attribut = "S"
  77.  
  78.           * - Vor Verlassen des Programmes werden die
  79.           * - DOS-Informationen gespeichert
  80.           * - Wichtig, Datei darf zu diesem Zeitpunkt
  81.           * - nicht mehr im Zugriff sein
  82.  
  83.           Adir( alidbf, dbf_name, dbf_byte, ;
  84.                         dbf_datu, dbf_zeit )
  85.           v_name = dbf_name[ dbf_anz ]
  86.           v_byte = dbf_byte[ dbf_anz ]
  87.           v_datu = dbf_datu[ dbf_anz ]
  88.           v_zeit = dbf_zeit[ dbf_anz ]
  89.  
  90.           Save All Like v_* To &alimem
  91.  
  92.           If File( alimem )
  93.              Rueck = .T.
  94.           Else
  95.              Rueck = .F.
  96.           Endif
  97.  
  98.       Endcase
  99.  
  100.       Return Rueck
  101.  
  102. ***********************************************************
  103. *                Ende von Funktion CHECKDBF               *
  104. ***********************************************************
  105.  
  106.  
  107. *
  108. *---< Hier beginnt Funktion DRUCKOK >---*
  109. *
  110.  
  111.  
  112. ************************************************************
  113. *                                                          *
  114. *       Sprache   :  Clipper Summer '87                    *
  115. *                                                          *
  116. *       Funktion  :  DRUCKOK                               *
  117. *                    Prüfung, ob Drucker LPT1 bereit       *
  118. *                    oder Umleitung in ASCII-Datei         *
  119. *                                                          *
  120. *       Syntax    :  DRUCKOK()                             *
  121. *                                                          *
  122. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  123. *                                                          *
  124. ************************************************************
  125.  
  126. FUNCTION DRUCKOK
  127.  
  128.    druckmsk = SaveScreen( 12, 10, 14, 70 )
  129.    @ 12, 10 To 14, 70 Double
  130.  
  131.    ausgabe = "LPT1"
  132.    text1   = " Ausgabe auf Drucker "
  133.    text2   = "Wenn Drucker bereit, beliebige Taste " + ;
  134.              "drücken ..."
  135.  
  136.    @ 12, FMitte( text1 ) Say text1
  137.  
  138.    Do While .t.
  139.       @ 13, 11 Say Space(58)
  140.       @ 13, FMitte( text2 ) Say text2
  141.       Inkey(0)
  142.       Set Printer To &ausgabe
  143.       If Isprinter()
  144.          Exit
  145.       Else
  146.          @ 13, FMitte( text2 ) Say Space(Len(text2))
  147.          frage = "N"
  148.          @ 13, 18 Say "Drucker nicht bereit ... " + ;
  149.                       "Abbrechen (J/N) ? "          ;
  150.                   Get frage Picture "!"         ;
  151.                             Valid frage $ "JN"
  152.          Read
  153.          @ 13, 11 Say Space(58)
  154.          If frage = "J"
  155.             ausgabe = "PRINT.ME"
  156.             Exit
  157.          Endif
  158.       Endif
  159.    Enddo
  160.  
  161.    @ 13, 11 Say Space(58)
  162.    text3 = "Druckausgabe nach " + ausgabe
  163.    @ 13, FMitte( text3 ) Say text3
  164.    Inkey(2)
  165.  
  166.    RestScreen( 12, 10, 14, 70, druckmsk )
  167.  
  168.    Set Printer To &ausgabe
  169.  
  170.    Return .t.
  171.  
  172. ***********************************************************
  173. *                Ende von Funktion DRUCKOK                *
  174. ***********************************************************
  175.  
  176.  
  177. *
  178. *---< Hier beginnt Funktion FMITTE >---*
  179. *
  180.  
  181.  
  182. ************************************************************
  183. *                                                          *
  184. *       Sprache   :  Clipper Summer '87                    *
  185. *                                                          *
  186. *       Funktion  :  FMITTE                                *
  187. *                    Zentrieren einer Meldung              *
  188. *                                                          *
  189. *       Syntax    :  FMITTE( <cMeldung> )                  *
  190. *                                                          *
  191. *       Parameter :  <cDateiname> übergibt den Namen der   *
  192. *                    Datenbank ohne Extension              *
  193. *                                                          *
  194. *          (c) 1991 Anatol Gardner & DMV-Verlag            *
  195. *              in   DOS-International, Ausgabe 11'91       *
  196. *                                                          *
  197. ************************************************************
  198.  
  199. FUNCTION FMITTE
  200.  
  201.    PARAMETERS FString
  202.  
  203.    FMitte = Round( 40 - ( Len( FString ) / 2 ), 0 )
  204.    Return FMitte
  205.  
  206. ***********************************************************
  207. *                Ende von Funktion FMitte                 *
  208. ***********************************************************
  209.  
  210.  
  211. *
  212. *---< Hier beginnt Funktion DBFBACK >---*
  213. *
  214.  
  215.  
  216. ************************************************************
  217. *                                                          *
  218. *   Sprache   : Clipper Summer '87                         *
  219. *                                                          *
  220. *   Funktion  : DBFBACK                                    *
  221. *               Datensicherung von dBASE.Dateien auf       *
  222. *               Diskettenlaufwerk                          *
  223. *                                                          *
  224. *   Syntax    : DBFBACK( <nZeile>, <cQuelldatei>,          *
  225. *                                  <cZieldatei>  )         *
  226. *   Parameter : <nZeile> übergibt die Zeile für            *
  227. *                        Kommentare                        *
  228. *               <cQuell> übergibt den Namen der Quelldatei *
  229. *                        von Laufwerk C:                   *
  230. *               <cZiel>  übergibt den Namen der Zieldatei  *
  231. *                        von Laufwerk A:                   *
  232. *               Die Dateierweiterung *.DBF wird automat.   *
  233. *               angehangen.                                *
  234. *                                                          *
  235. *   Rückgabe  :  .T. = Wenn Datensicherung erfolgreich     *
  236. *                .F. = bei aufgetretenen Fehlern           *
  237. *                                                          *
  238. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  239. *                                                          *
  240. ************************************************************
  241.  
  242. FUNCTION DBFBACK
  243.  
  244.    PARAMETERS zeile, quell, ziel
  245.    Private diskette, kennung, kopiere, ngroesse
  246.    Private rueck, vorhanden
  247.  
  248.    quell  = "C:" + quell + ".DBF"
  249.    ziel   = "A:\" + ziel + ".DBF"
  250.  
  251.    If dskready()
  252.       kopiere   = .T.
  253.       vorhanden = .F.
  254.       If File( ziel )
  255.          frage = " "
  256.          @ zeile, 0 Say " Soll Sicherungskopie"           +;
  257.                         " überschrieben werden (J/N) ? "   ;
  258.                     Get frage Picture "!" Valid frage $ "JN"
  259.          Read
  260.          @ zeile, 0
  261.          If frage = "J"
  262.             vorhanden = .T.
  263.          Else
  264.             kopiere   = .F.
  265.          Endif
  266.       Endif
  267.  
  268.       If kopiere = .T.
  269.          @ zeile, 0 Say " Datei wird gelesen ... "
  270.          If File( quell )
  271.             Use &quell
  272.             ngroesse = Int(Recsize() * Lastrec() + ;
  273.                            Header() + 1 )
  274.             dgroesse = Diskspace(1)
  275.             If vorhanden = .T.
  276.                dgroesse = Diskspace(1) + ngroesse
  277.             Endif
  278.             Use
  279.             @ zeile, 0
  280.             If dgroesse > ngroesse
  281.                @ zeile, 0 Say " Kopiere " +quell+ " --> " +;
  282.                                ziel
  283.                Copy File &quell To &ziel
  284.                If File( ziel )
  285.                   rueck = .T.
  286.                Else
  287.                   rueck = .F.
  288.                Endif
  289.                Inkey(2)
  290.                @ zeile, 0
  291.             Else
  292.                @ zeile, 0 Say " Zuwenig Plattenkapazität "+;
  293.                             Alltrim( Str( dgroesse ) )    +;
  294.                            " Bytes frei / "               +;
  295.                             Alltrim( Str( ngroesse ) )    +;
  296.                            " Bytes "
  297.                Inkey(0)
  298.                @ zeile, 0
  299.                rueck = .F.
  300.             Endif
  301.          Else
  302.             @ zeile, 0 Say " Datei : " + quell            +;
  303.                            " nicht gefunden ..."          +;
  304.                            " weiter mit beliebiger Taste "
  305.             Inkey(0)
  306.             rueck = .F.
  307.             @ zeile, 0
  308.          Endif
  309.       Else
  310.          rueck = .F.
  311.       Endif
  312.    Else
  313.       rueck = .F.
  314.    Endif
  315.  
  316.    Return rueck
  317.  
  318. ***********************************************************
  319. *                Ende von Funktion DBFBACK                *
  320. ***********************************************************
  321.  
  322.  
  323. *
  324. *---< Hier beginnt Funktion DBFREST >---*
  325. *
  326.  
  327.  
  328. ************************************************************
  329. *                                                          *
  330. *   Sprache   : Clipper Summer '87                         *
  331. *                                                          *
  332. *   Funktion  : DBFRESTORE                                 *
  333. *               Einlesen einer gesicherten dBASE-Datei     *
  334. *                                                          *
  335. *   Syntax    : DBFREST( <nZeile>, <cQuelldatei>,          *
  336. *                                  <cZieldatei>  )         *
  337. *   Parameter : <nZeile> übergibt die Zeile für            *
  338. *                        Kommentare                        *
  339. *               <cQuell> übergibt den Namen der Quelldatei *
  340. *                        von Laufwerk A:                   *
  341. *               <cZiel>  übergibt den Namen der Zieldatei  *
  342. *                        von Laufwerk C:                   *
  343. *               Die Dateierweiterung *.DBF wird automat.   *
  344. *               angehangen.                                *
  345. *                                                          *
  346. *   Rückgabe  :  .T. = Wenn Einlesen erfolgreich           *
  347. *                .F. = bei aufgetretenen Fehlern           *
  348. *                                                          *
  349. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  350. *                                                          *
  351. ************************************************************
  352.  
  353.  
  354. FUNCTION DBFREST
  355.  
  356.    PARAMETERS zeile, quell, ziel
  357.    Private diskette, kennung, kopiere,
  358.    Private rueck
  359.  
  360.    quell = "A:\" + quell + ".DBF"
  361.    ziel  = "C:"  + ziel  + ".DBF"
  362.  
  363.    If dskready()
  364.       If File( quell )
  365.          Use &quell
  366.          @ zeile, 0 Say " Kopiere " + quell + " --> " + ziel
  367.          Copy File &quell To &ziel
  368.          If File( ziel )
  369.             rueck = .T.
  370.          Else
  371.             rueck = .F.
  372.          Endif
  373.          Inkey(2)
  374.          @ zeile, 0
  375.       Else
  376.          @ zeile, 0 Say " Datei : " + quell            +;
  377.                         " nicht gefunden ..."          +;
  378.                         " weiter mit beliebiger Taste "
  379.          Inkey(0)
  380.          rueck = .F.
  381.          @ zeile, 0
  382.       Endif
  383.    Else
  384.       rueck = .F.
  385.    Endif
  386.  
  387.    Return rueck
  388.  
  389. ***********************************************************
  390. *                Ende von Funktion DBFREST                *
  391. ***********************************************************
  392.  
  393.  
  394. *
  395. *---< Hier beginnt Funktion DSKREADY >---*
  396. *
  397.  
  398.  
  399. ************************************************************
  400. *                                                          *
  401. *   Sprache   : Clipper Summer '87                         *
  402. *                                                          *
  403. *   Funktion  : DSKREADY                                   *
  404. *               Prüft Bereitschaft Diskettenlaufwerk A:    *
  405. *                                                          *
  406. *   Parameter : <nZeile> übergibt die Zeile für            *
  407. *                        Kommentare                        *
  408. *                                                          *
  409. *   Syntax    : DSKREADY()                                 *
  410. *                                                          *
  411. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  412. *                                                          *
  413. ************************************************************
  414.  
  415.  
  416. FUNCTION DSKREADY
  417.  
  418.    PARAMETERS zeile
  419.    Private dummy, rueck
  420.  
  421.    If PCount() = 0
  422.       zeile = Row()          && Aktuelle Zeile
  423.    Endif
  424.  
  425.    dummy = "A:\DUMMY.TMP"
  426.  
  427.    @ zeile, 0
  428.  
  429.    Do While .t.
  430.  
  431.       @ zeile, 0 Say " Wenn Diskette bereit ..."  + ;
  432.                      " beliebige Taste drücken"
  433.       Inkey(0)
  434.       @ zeile, 0
  435.       kennung = FCreate( dummy )      && Versuch, temporäre
  436.                                       && Datei zu erzeugen
  437.  
  438.       If FError() <> 0                && Fehlercode abfangen
  439.          frage = " "
  440.          @ zeile, 0 Say dosfehler() + " Abbrechen (J/N) ? ";
  441.                  Get frage Picture "!" Valid frage $ "JN"
  442.          Read
  443.          @ zeile, 0
  444.          If frage = "J"
  445.             rueck = .F.
  446.             Exit
  447.          Endif
  448.       Else
  449.          FClose( kennung )            && Datei schließen
  450.          Erase &dummy                 && und löschen
  451.          rueck = .T.
  452.          Exit
  453.       Endif
  454.  
  455.    Enddo
  456.  
  457.    Return rueck
  458.  
  459. ***********************************************************
  460. *                Ende von Funktion DSKREADY               *
  461. ***********************************************************
  462.  
  463.  
  464. *
  465. *---< Hier beginnt Funktion DOSFEHLER >---*
  466. *
  467.  
  468.  
  469. ************************************************************
  470. *                                                          *
  471. *   Sprache   : Clipper Summer '87                         *
  472. *                                                          *
  473. *   Funktion  : DOSFEHLER                                  *
  474. *               Gibt letzte DOS-Fehlernummer im Klartext   *
  475. *               zurück bei Low-level Dateifunktionen       *
  476. *                                                          *
  477. *   Syntax    : DOSFEHLER()                                *
  478. *                                                          *
  479. *   Rückgabe  : <cString> DOS-Fehler im Klartext           *
  480. *                                                          *
  481. *             (c) 1992 Ingo Berg & DMV-Verlag              *
  482. *                                                          *
  483. ************************************************************
  484.  
  485.  
  486. FUNCTION DOSFEHLER
  487.  
  488.    Private rueck
  489.  
  490.    Do Case
  491.       Case FError() = 2
  492.            rueck = "Dos-Fehler (2) Datei nicht gefunden"
  493.       Case FError() = 3
  494.            rueck = "Dos-Fehler (3) Verzeichnis nicht "    +;
  495.                    "gefunden"
  496.       Case FError() = 4
  497.            rueck = "Dos-Fehler (4) Zuviele Dateien geöffnet"
  498.       Case FError() = 5
  499.            rueck = "Dos-Fehler (5) Zugriff verweigert"
  500.       Case FError() = 6
  501.            rueck = "Dos-Fehler (6) Ungültiger DOS-Handler"
  502.       Case FError() = 8
  503.            rueck = "Dos-Fehler (8) Kein Speicher mehr "  +;
  504.                    "vorhanden"
  505.       Case FError() = 15
  506.            rueck = "Dos-Fehler (15) Ungültige Lauf"      +;
  507.                    "werksangabe"
  508.       Case FError() = 19
  509.            rueck = "Dos-Fehler (19) Datenträger schreib" +;
  510.                    "geschützt"
  511.       Case FError() = 21
  512.            rueck = "Dos-Fehler (21) Laufwerk nicht bereit"
  513.       Case FError() = 23
  514.            rueck = "Dos-Fehler (23) CRC Datenfehler "    +;
  515.                    "(Checksumme)"
  516.       Case FError() = 29
  517.            rueck = "Dos-Fehler (29) Schreibfehler"
  518.       Case FError() = 30
  519.            rueck = "Dos-Fehler (30) Lesefehler"
  520.       Otherwise
  521.            rueck = "Dos-Fehler (" + Alltrim(Str(FError)) +;
  522.                    ") ... Nicht definiert ..."
  523.    Endcase
  524.  
  525.    Return rueck
  526.  
  527. ************************************************************
  528. *                Ende von Funktion DOSFEHLER               *
  529. ************************************************************
  530.  
  531.