home *** CD-ROM | disk | FTP | other *** search
- //////////////////////////////////////////////////////////////////////////////
- //
- // File: dBaseGet.mex
- //
- // Version: 3.90
- //
- // Desc: Tool zum Lesen ein dBase Datei
- //
- // Copyright 1996 by Carsten Nau
- //
- //
- // Basierend auf den REXX-Scripts von Thomas Borrmann
- // Ebenfalls habe ich mir Anregungen in den Scripts von Kurt Vogelsaenger
- // geholt.
- //////////////////////////////////////////////////////////////////////////////
-
- #include <max.mh>
-
- #define DBF_PATH "C:\\AREAS\\DATEN\\" // hier liegen die Datenbanken
- #define MISC_PATH "C:\\MAX\\MISC\\" // Dein Misc-Pfad
- #define MaxRc 4000 // = max. Anzahl der Datensätze
- #define Debug False // fuer Testzwecke auf True setzen
-
- // Strings für Erweiterte Zeichencodes
-
- // Doorway Modus
- #define CRSR_UP 18432
- #define CRSR_DOWN 20480
- #define CRSR_LEFT 19712
- #define CRSR_RIGHT 19200
- #define HOME 18176
- #define END 20224
- #define PG_UP 18688
- #define PG_DOWN 20736
- #define ENTER 124
- #define ESC 27
-
- // Non-Doorway Modus
- #define _UP 'H'
- #define _DOWN 'R'
- #define _LEFT 'V'
- #define _RIGHT 'N'
- #define _HOME 'A'
- #define _PGUP 'I'
- #define _PGDOWN 'P'
- #define _END 'L'
- #define _ESC 'E'
-
- // Vordergrund und Hintergrund | nur Vordergrund
- // ----------------------------+----------------
- // 0 schwarz | 8 dunkelgrau
- // 1 blau | 9 hellblau
- // 2 grüen | a hellgruen
- // 3 cyan | b hellcyan
- // 4 rot | c hellrot
- // 5 magenta | d hellmagenta
- // 6 braun | e gelb
- // 7 grau | f weiss
- //
- // ┌─ Hintergrund-Farbe
- // │┌ Vordergrund-Farbe (Schrift)
- #define Farbe1 "\x16\x01\x17" // = Feldname
- #define Farbe2 "\x16\x01\x1f" // = Inhalt
- #define Farbe3 "\x16\x01\x1e" // = Datum und Nr. von Ges.
- #define Farbe4 "\x16\x01\x30" // = Copyright
- #define Farbe5 "\x16\x01\x70" // = Meldungen
- #define Farbe6 "\x16\x01\x7e" // = Hotkey in Meldung
- #define Farbe7 "\x16\x01\x4e" // = Feld, Inhalt
- #define Farbe8 "\x16\x01\x1f" // = Hintergrund und Schrift (standart)
- #define Farbe9 "\x16\x01\x4e" // = Taste
- #define Farbe10 "\x16\x01\x4f" // = Hotkey Taste
- #define Farbe11 "\x16\x01\x1f" // = Browser Feldinhalt
- #define Farbe12 "\x16\x01\x3f" // = Browser Feldinhalt Balken
- #define Farbe13 "\x16\x01\x1e" // = Text vom Datensatz
-
- #define BlkGr 16 // = max. Zeilen per Seite
-
- char: nonstop;
-
- unsigned long: RcCnt; // Anzahl der Einträge
- long: BlkNrM;
- unsigned int: RcLen, HdrLen;
- string: buf, date, DoorBase, FileName;
- int: fd, fdt, RxDBF_Cnt, RxDBFBrowseMax, TextBase;
- array [1..BlkGr] of string: RxDBF_Name; // Feldname
- array [1..BlkGr] of string: RxDBF_Inhalt; // Feldinhalt
- array [1..BlkGr] of char: RxDBF_Type; // Feldtyp
- array [1..BlkGr] of unsigned int: RxDBF_Off; // Feldoffset
- array [1..BlkGr] of char: RxDBF_Len; // Feldlänge
- array [1..BlkGr] of char: RxDBF_Dec; // davon Dezimalstellen
- array [0..MaxRc] of long: TextOffset; // Textposition
-
- /////////////////////////////////////////////////////////////////
- string gotoxy(int: row, int: col)
- {
- string: seq;
- seq[1] := 22;
- seq[2] := 8;
- seq[3] := row+1;
- seq[4] := col+1;
- return seq;
- }
-
- //////////////////////////////////////////////////////////////////////////
- // RxInitDBF: Datei <Filename> oeffnen und Header lesen. //
- // Bei Misserfolg wird 'Fehler: <Fehlertext>' zurueckgegeben //
- //////////////////////////////////////////////////////////////////////////
-
- string RxInitDBF()
- {
- int: jahr, i, offs;
- unsigned char: zahl1, zahl2, zahl3, zahl4, Len, Dec, Type;
- string: dBRec, Name;
-
- i:=0;
- offs:=1;
-
- IF (fileexists(DBF_PATH+FileName+".dbf"))
- {
- fd := open(DBF_PATH+FileName+".dbf",IOPEN_READ);
- read(fd,dBRec,32);
- if (dBRec[1] <> 4 and dBRec[1] <> 3)
- {
- log("!Fehler: keine dBaseIII- oder dBaseIV- Datei");
- return "Fehler: keine dBaseIII- oder dBaseIV- Datei";
- }
- else
- {
- jahr := dBRec[2];
- IF (jahr < 80)
- jahr:=jahr+2000;
- else
- jahr:=jahr+1900;
- date:=itostr(dBRec[4])+"."+itostr(dBRec[3])+"."+itostr(jahr);
- zahl1:=dBRec[5];
- zahl2:=dBRec[6];
- zahl3:=dBRec[7];
- zahl4:=dBRec[8];
- RcCnt:=(zahl4*16777216)+(zahl3*65536)+(zahl2*256)+zahl1;
- zahl1:=dBRec[9];
- zahl2:=dBRec[10];
- HdrLen:=(zahl2*256)+zahl1+1;
- zahl1:=dBRec[11];
- zahl2:=dBRec[12];
- RcLen:=(zahl2*256)+zahl1;
- start:
- i:=i+1;
- seek(fd,i*32,SEEK_SET);
- read(fd,dBRec,32);
- IF (dBRec[1] = 13)
- {
- if(RxDBF_Name[i-1]="DOORBASE")
- {
- RxDBF_Cnt:=i-1;
- TextBase:=1;
- }
- else
- {
- RxDBF_Cnt:=i;
- TextBase:=0;
- }
- return "OK";
- }
- RxDBF_Name[i]:=strtrim(substr(dBRec,1,11)," ");
- RxDBF_Type[i]:=dBRec[12];
- RxDBF_Len[i]:=dBRec[17];
- RxDBF_Dec[i]:=dBRec[18];
- RxDBF_Off[i]:=offs;
- offs:=offs+RxDBF_Len[i];
- goto start;
- }
- }
- ELSE
- {
- log("!Die Datei "+DBF_PATH+FileName+".dbf existiert nicht!");
- return "Fehler: Datei nicht vorhanden";
- }
- }
-
-
- /////////////////////////////////////////////////////////////////
- // RxGetDBFRec( Satznummer ) //
- // liest einen dBase-Dateisatz Satznummer und //
- // schreibt ihn in RxDBF_Inhalt[x] //
- // Wenn der Satz nicht existiert, wird der Dateistatus mit //
- // Description zurueckgegeben //
- /////////////////////////////////////////////////////////////////
-
- void RxGetDBFRec(unsigned long: RcNr)
- {
- int: i;
- long: BytePos;
- string: dBRec;
- BytePos:= (RcNr-1) * RcLen + HdrLen;
- seek(fd,BytePos,SEEK_SET);
- read(fd,dBRec,RcLen);
- FOR (i:=1; i<RxDBF_Cnt; i:=i+1)
- RxDBF_Inhalt[i]:=substr(dBRec, (RxDBF_Off[i]), RxDBF_Len[i]);
- IF(TextBase=1)
- DoorBase:=substr(dBRec, (RxDBF_Off[RxDBF_Cnt]), RxDBF_Len[RxDBF_Cnt]);
- return;
- }
-
- /////////////////////////////////////////////////////////////////
- // RxDBFSearch( string: suche, unsigned long: RcNr ) //
- // suchte in den dBase-Datensatze mit dem Inhalt von 'suche' //
- // und gibt die Nummer zurück //
- // Wenn der Satz nicht existiert, wird die Nummer Null zurück //
- // gegeben. //
- /////////////////////////////////////////////////////////////////
- unsigned long RxDBFSearch(string: suche, unsigned long: RcNr)
- {
- unsigned long: BytePos;
- int: done;
- string: dBRec;
- DO
- {
- RcNr:=RcNr+1;
- BytePos:= (RcNr-1) * RcLen + HdrLen;
- seek(fd,BytePos,SEEK_SET);
- read(fd,dBRec,RcLen);
- done:=strfind(strupper(dBRec),strupper(suche));
- } while(done<1 and RcNr<=RcCnt);
- If(done=0)
- RcNr:=0;
- return RcNr;
- }
-
- /////////////////////////////////////////////////////////////////
- string center(string: arg)
- {
- arg:=strpad("",(80-strlen(arg))/2,' ')+arg;
- arg:=strpad(arg,80,' ');
- return arg;
- }
-
- /////////////////////////////////////////////////////////////////
- void RxDBFPrint()
- {
- int: i;
- FOR (i:=1; i<RxDBF_Cnt; i:=i+1)
- print(gotoxy(i+1,2),Farbe1,RxDBF_Name[i],": ",gotoxy(i+1,15),Farbe2,substr(RxDBF_Inhalt[i],1,64));
- }
-
- /////////////////////////////////////////////////////////////////
- string RxDBFPrintBrowse(long: RcNr)
- {
- int: i;
- string: text;
- text:="";
- RxGetDBFRec(RcNr);
- for(i:=1; i<RxDBFBrowseMax; i:=i+1)
- text:=text+RxDBF_Inhalt[i]+"│";
- return text;
- }
-
- /////////////////////////////////////////////////////////////////
- void maske()
- {
- int: i;
- print (gotoxy(0,0),Farbe4,center("O N L I N E - D A T E N B A N K"));
- for(i:=2; i<BlkGr+4; i:=i+1)
- print(gotoxy( i,0),Farbe8," ");
- print(gotoxy(BlkGr+3,0),Farbe8,"────────────────────────────────────────────────────────────────────────────────");
- print(gotoxy(BlkGr+4,0),Farbe8," Steuerung: ");
- print(gotoxy(BlkGr+5,0),Farbe8," ");
- print (gotoxy(BlkGr+6,0),Farbe4,center("dBaseGET 3.90 (c) Carsten Nau 1996"));
- return;
- }
-
- /////////////////////////////////////////////////////////////////
- void keybrowser()
- {
- nonstop:=1;
- print(gotoxy(BlkGr+4,0));
- display_file(MISC_PATH+"DBGET_K2",nonstop); // DBGET_K2.MEC
- }
-
- /////////////////////////////////////////////////////////////////
- void hauptkey()
- {
- nonstop:=1;
- print(gotoxy(BlkGr+4,0));
- display_file(MISC_PATH+"DBGET_K1",nonstop); // DBGET_K1.MEC
- If(TextBase=1)
- print(gotoxy(BlkGr+5,57),Farbe10," T",Farbe9,"ext "); // Hilfe
- print(gotoxy(BlkGr+2,1),Farbe3,"Datum der letzten Aenderung: ",date);
- }
-
- /////////////////////////////////////////////////////////////////
- void RxDBFText(long:Offset, int: BlkNr, int: MaxZeile)
- {
- int: rc, cnt;
- string: Textzeile;
-
- seek(fdt,Offset,SEEK_SET);
- for(cnt:=0; cnt<(BlkNr-1)*BlkGr; cnt:=cnt+1)
- rc:=readln(fdt, Textzeile);
- for(cnt:=0; cnt<BlkGr; cnt:=cnt+1)
- {
- rc:=readln(fdt, Textzeile);
- if(substr(Textzeile,1,1)="{" and substr(Textzeile,10,1)="}")
- Textzeile:=substr(Textzeile,11,80);
- if((BlkNr-1)*BlkGr+cnt<MaxZeile-2)
- {
- print(Farbe13,gotoxy(cnt+2,0)," ");
- print(Farbe13,gotoxy(cnt+2,0),Textzeile);
- }
- else
- print(Farbe13,gotoxy(cnt+2,0)," ");
- }
- return;
- }
-
- /////////////////////////////////////////////////////////////////
- void hauptmaske()
- {
- maske();
- print(gotoxy( 1,0),Farbe7," Feldname Inhalt ");
- hauptkey();
- }
-
- /////////////////////////////////////////////////////////////////
- void masketext()
- {
- maske();
- print(gotoxy( 1,0),Farbe7," Text ");
- keybrowser();
- }
-
- /////////////////////////////////////////////////////////////////
- void maskebrowser()
- {
- unsigned int: i;
- maske();
- print(gotoxy( 1,0),Farbe7," ");
- for(i:=1; i<RxDBFBrowseMax; i:=i+1)
- print(gotoxy( 1,(RxDBF_Off[i]+i)-1),Farbe7,RxDBF_Name[i],gotoxy( 1,(RxDBF_Off[i+1]+i)-1),"│");
- keybrowser();
- print(gotoxy(BlkGr+2,1),Farbe3,"Datum der letzten Aenderung: ",date);
- }
-
- /////////////////////////////////////////////////////////////////
- void RxDBFBrowse(long: RcNr)
- {
- int: BlkNr, i;
-
- print(gotoxy(BlkGr+2,40),Farbe3,"/ Nr.",RcNr," von ",RcCnt," ");
- BlkNr:=(((RcNr-1)-((RcNr-1)%BlkGr))/BlkGr)+1;
- If (BlkNr<>BlkNrM)
- {
- BlkNrM:=BlkNr;
- for(i:=1; i<=BlkGr; i:=i+1)
- {
- if ((BlkNr*BlkGr-BlkGr+i)<=RcCnt)
- {
- if (BlkNr*BlkGr-BlkGr+i=RcNr)
- print(Farbe12,gotoxy(i+1,0),">",RxDBFPrintBrowse(BlkNr*BlkGr-BlkGr+i));
- else
- print(Farbe11,gotoxy(i+1,0)," ",RxDBFPrintBrowse(BlkNr*BlkGr-BlkGr+i));
- }
- else
- print(gotoxy( i+1,0),Farbe8," ");
- }
- }
- Else
- {
- If(((RcNr-1)%BlkGr)>=1)
- print(Farbe11,gotoxy((RcNr-1)%BlkGr+1,0)," ",RxDBFPrintBrowse(RcNr-1));
- If(((RcNr-1)%BlkGr)+2<=BlkGr and RcNr<RcCnt)
- print(Farbe11,gotoxy((RcNr-1)%BlkGr+3,0)," ",RxDBFPrintBrowse(RcNr+1));
- print(Farbe12,gotoxy((RcNr-1)%BlkGr+2,0),">",RxDBFPrintBrowse(RcNr));
- }
- }
-
- /////////////////////////////////////////////////////////////////
- void TextBaseInit()
- {
- int: rc, done, zeile, ZeileCnt, RcNrH;
- long: TextOff, TextOffM;
- unsigned long: RcNr, found;
- string: Textzeile, Base;
- nonstop:=1;
-
- IF (fileexists(DBF_PATH+FileName+".txb"))
- IF (fileexists(DBF_PATH+FileName+".txi"))
- {
- display_file(MISC_PATH+"DBGET_M3",nonstop); // DBGET_M3.MEC
- print(Farbe5,gotoxy(10,45),RcCnt);
- fdt:=open(DBF_PATH+FileName+".txi",IOPEN_READ);
- for(rc:=0; rc<=RcCnt; rc:=rc+1)
- {
- print(gotoxy(10,33),rc);
- zeile:=readln(fdt, Textzeile);
- TextOffset[rc]:=strtol(Textzeile);
- }
- close(fdt);
- }
- else
- {
- fdt:=open(DBF_PATH+FileName+".txb",IOPEN_READ);
- // log("!Bearbeite: "+DBF_PATH+FileName+".txb");
- display_file(MISC_PATH+"DBGET_H1",nonstop); // DBGET_H1.MEC
- print(Farbe5,gotoxy(16,45),RcCnt);
- DO
- {
- TextOffM:=TextOff;
- TextOff:=tell(fdt);
- rc:=readln(fdt, Textzeile);
- done:=kbhit();
- ZeileCnt:=ZeileCnt+1;
- if(TextOffM<>TextOff and Debug=True)
- print(gotoxy(18,40),"Zeile: ",ZeileCnt);
- if(substr(Textzeile,1,1)="{" and substr(Textzeile,10,1)="}")
- {
- Base:=substr(Textzeile,2,8);
- RcNr:=RxDBFSearch(Base,0);
- if(RcNr<>0)
- {
- found:=found+1;
- print(gotoxy(16,33),found);
- RcNrH:=RcNr;
- TextOffset[RcNrH]:=TextOff;
- }
- }
- }while(rc<>-1 and done=False);
- close(fdt);
- if(done=True)
- TextBase:=0;
- else
- {
- fdt:=open(DBF_PATH+FileName+".txi",IOPEN_WRITE | IOPEN_CREATE);
- for(rc:=0; rc<=RcCnt; rc:=rc+1)
- writeln(fdt,ltostr(TextOffset[rc]));
- close(fdt);
- }
- }
- else
- {
- display_file(MISC_PATH+"DBGET_M1",nonstop); // DBGET_M1.MEC
- getch();
- }
- hauptmaske();
- return;
- }
-
- /////////////////////////////////////////////////////////////////
- long showtext(long: RcNr)
- {
- int: rc, done, RcNrH, BlkNr, BlkMax, MaxZeile, key, ext_key;
- char: keyhit;
- string: Textzeile;
- RcNrH:=RcNr;
- BlkNr:=1;
- nonstop:=1;
-
- IF (fileexists(DBF_PATH+FileName+".txb"))
- {
- fdt:=open(DBF_PATH+FileName+".txb",IOPEN_READ);
- // Feststellen wie viele Blöcke und Zeilen der Text hat
- seek(fdt,TextOffset[RcNrH],SEEK_SET);
- rc:=readln(fdt, Textzeile);
- MaxZeile:=1;
- done:=False;
- DO
- {
- rc:=readln(fdt, Textzeile);
- MaxZeile:=MaxZeile+1;
- if(substr(Textzeile,1,1)="{" and substr(Textzeile,10,1)="}")
- {
- done:=True;
- }
- }while(done=False and rc>=0);
- BlkMax:=(MaxZeile-(MaxZeile%BlkGr))/BlkGr+1;
- masketext();
- RxDBFText(TextOffset[RcNrH], BlkNr, MaxZeile);
- done:=False;
- // Steuerschleife
- DO
- {
- key := input_ch(CINPUT_SCAN | CINPUT_NOCTRLC, Farbe1);
- if (key=91) // Check auf erweiterte Tasten
- {
- ext_key := input_ch(CINPUT_SCAN,Farbe1);
- }
- if (key=CRSR_UP or ext_key=_UP or key=(int)'8'or key=PG_UP or ext_key=_PGUP or key=(int)'V' or key=(int)'9')
- {
- BlkNr:=BlkNr-1;
- keyhit:=0;
- }
-
- if (key=CRSR_DOWN or ext_key=_DOWN or key=(int)'2' or key=PG_DOWN or ext_key=_PGDOWN or key=(int)'N' or key=(int)'3')
- {
- BlkNr:=BlkNr+1;
- keyhit:=0;
- }
-
- if (key=HOME or ext_key=_HOME or key=(int)'7' or key=(int)'A')
- {
- BlkNr:=1;
- keyhit:=0;
- }
-
- if (key=END or ext_key=_END or key=(int)'1' or key=(int)'L')
- {
- BlkNr:=BlkMax;
- keyhit:=0;
- }
-
- if (key='?' or key=(int)'?') // Taste "?"
- {
- display_file(MISC_PATH+"DBGET_H2",nonstop); // DBGET_H2.MEC
- getch();
- masketext();
- }
- if (key=ENTER) // Taste "Enter"
- {
- done:=True;
- }
- if (key='E' or key=(int)'E') // Taste "E"
- {
- RcNr:=0;
- done:=True;
- }
- IF (keyhit=0)
- {
- IF (BlkNr > BlkMax)
- BlkNr:=BlkMax;
- IF (BlkNr < 1)
- BlkNr:=1;
- keyhit:=1;
- // print(Farbe1,gotoxy(19,0),"BlkNr: ",BlkNr," MaxZeile: ",MaxZeile," BlkMax: ",BlkMax);
- RxDBFText(TextOffset[RcNrH], BlkNr, MaxZeile);
- }
- } while (done = False);
- }
- else
- {
- display_file(MISC_PATH+"DBGET_M1",nonstop); // DBGET_M1.MEC
- getch();
- }
- close(fdt);
- return RcNr;
- }
-
- /////////////////////////////////////////////////////////////////
- long browser( long: RcNr)
- {
- int: i, key, ext_key, done, BlkNr;
- char: keyhit;
- nonstop:=1;
-
- // Steuerungsschleife
- maskebrowser();
- BlkNrM:=0;
- RxDBFBrowse(RcNr);
- keyhit:=1;
- DO
- {
- key := input_ch(CINPUT_SCAN | CINPUT_NOCTRLC, Farbe1);
- if (key=91) // Check auf erweiterte Tasten
- {
- ext_key := input_ch(CINPUT_SCAN,Farbe1);
- }
- if (key=CRSR_UP or ext_key=_UP or key=(int)'V' or key=(int)'8')
- {
- RcNr:=RcNr-1;
- keyhit:=0;
- }
-
- if (key=PG_UP or ext_key=_PGUP or key=(int)'9')
- {
- BlkNrM:=0;
- RcNr:=RcNr-BlkGr;
- keyhit:=0;
- }
-
- if (key=CRSR_DOWN or ext_key=_DOWN or key=(int)'N' or key=(int)'2')
- {
- RcNr:=RcNr+1;
- keyhit:=0;
- }
-
- if (key=PG_DOWN or ext_key=_PGDOWN or key=(int)'3')
- {
- BlkNrM:=0;
- RcNr:=RcNr+BlkGr;
- keyhit:=0;
- }
-
- if (key=HOME or ext_key=_HOME or key=(int)'7' or key=(int)'A')
- {
- BlkNrM:=0;
- RcNr:=0;
- keyhit:=0;
- }
-
- if (key=END or ext_key=_END or key=(int)'1' or key=(int)'L')
- {
- BlkNrM:=0;
- RcNr:=RcCnt;
- keyhit:=0;
- }
-
- if (key='?' or key=(int)'?') // Taste "?"
- {
- display_file(MISC_PATH+"DBGET_H3",nonstop); // DBGET_H3.MEC
- getch();
- maskebrowser();
- BlkNrM:=0;
- keyhit:=0;
- }
- if (key=ENTER) // Taste "Enter"
- {
- done:=True;
- }
- if (key='E' or key=(int)'E') // Taste "E"
- {
- RcNr:=0;
- done:=True;
- }
- IF (keyhit=0)
- {
- IF (RcNr > RcCnt)
- RcNr:=RcCnt;
- IF (RcNr < 1)
- RcNr:=1;
- keyhit:=1;
- RxDBFBrowse(RcNr);
- }
- } while (done = False);
- return RcNr;
- }
-
- /////////////////////////////////////////////////////////////////
- void main(string: File)
- {
- long: TempRcNr, RcNr, RcFound;
- int: i, key, ext_key, done;
- char: keyhit;
- string: rc, suche;
-
- FileName:=File;
- nonstop:=1;
-
- log("#dBaseGet \'"+FileName+"\' Start");
- rc:=RxInitDBF();
- IF (substr(rc,1,6)="Fehler")
- {
- log("!"+DBF_PATH+FileName+".dbf: "+rc);
- return;
- }
- else
- {
- RcNr:=1;
- RxGetDBFRec(RcNr);
- RxDBFBrowseMax:=2;
- i:=1;
- do
- {
- RxDBFBrowseMax:=RxDBFBrowseMax+RxDBF_Len[i]+1;
- i:=i+1;
- } while (RxDBFBrowseMax<80 and i<RxDBF_Cnt);
- RxDBFBrowseMax:=i-1;
- if(RxDBFBrowseMax<2)
- RxDBFBrowseMax:=2;
- hauptmaske();
- If(TextBase=1)
- {
- log("#TextBase Format");
- TextBaseInit();
- }
- print(gotoxy(BlkGr+2,40),Farbe3,"/ Nr.",RcNr," von ",RcCnt);
- RxDBFPrint();
- // Steuerungsschleife
- DO
- {
- key := input_ch(CINPUT_SCAN | CINPUT_NOCTRLC, Farbe1);
- if (key=91) // Check auf erweiterte Tasten
- {
- ext_key := input_ch(CINPUT_SCAN,Farbe1);
- }
- if (key=CRSR_RIGHT or ext_key=_RIGHT or key=(int)'V' or key=(int)'4' or key=CRSR_UP or ext_key=_UP or key=(int)'8' or key=(int)'-')
- {
- RcNr:=RcNr-1;
- keyhit:=0;
- }
-
- if (key=CRSR_LEFT or ext_key=_LEFT or key=(int)'N' or key=(int)'6' or key=CRSR_DOWN or ext_key=_DOWN or key=(int)'2' or key=(int)'+')
- {
- RcNr:=RcNr+1;
- keyhit:=0;
- }
-
- if (key=HOME or ext_key=_HOME or key=(int)'7' or key=(int)'A')
- {
- RcNr:=0;
- keyhit:=0;
- }
-
- if (key=END or ext_key=_END or key=(int)'1' or key=(int)'L')
- {
- RcNr:=RcCnt;
- keyhit:=0;
- }
-
- if (key='S' or key=(int)'S')
- {
- TempRcNr:=RcNr; //aktueller Record sichern
- RcNr:=0; // Record auf 0 setzen, damit die Suche immer am Anfang der Datei startet
- display_file(MISC_PATH+"DBGET_M4",nonstop); // DBGET_M4.MEC
- print(Farbe5,gotoxy(12,23));
- RcFound:=input_str(suche,INPUT_NLB_LINE|INPUT_NOCTRLC,0,36,"");
- if (RcFound=0)
- {
- RcNr:=TempRcNr; // sofern Suchtring nicht gefunden wird, Ursprungsrecord wieder herstellen.
- display_file(MISC_PATH+"DBGET_M5",nonstop); // DBGET_M5.MEC
- getch();
- }
- else
- {
- RcFound:=RxDBFSearch(suche,RcNr);
- if(RcFound=0)
- {
- display_file(MISC_PATH+"DBGET_M2",nonstop); // DBGET_M2.MEC
- getch();
- }
- else
- RcNr:=RcFound;
- }
- hauptmaske();
- keyhit:=0;
- }
-
- if (key='W' or key=(int)'W')
- {
- RcFound:=RxDBFSearch(suche,RcNr);
- if(RcFound=0)
- {
- display_file(MISC_PATH+"DBGET_M2",nonstop); // DBGET_M2.MEC
- getch();
- }
- else
- RcNr:=RcFound;
- hauptmaske();
- keyhit:=0;
- }
-
- if (key='U' or key=(int)'U')
- {
- RcNr:=browser(RcNr);
- if(RcNr=0)
- done:=True;
- hauptmaske();
- keyhit:=0;
- }
-
- if (key='T' or key=(int)'T' and TextBase=1)
- {
- RcNr:=showtext(RcNr);
- if(RcNr=0)
- done:=True;
- hauptmaske();
- keyhit:=0;
- }
-
- if (key='?' or key=(int)'?') // Taste "?"
- {
- display_file(MISC_PATH+"DBGET_H4",nonstop); // DBGET_H4.MEC
- getch();
- hauptmaske();
- keyhit:=0;
- }
-
- if (key='E' or key=(int)'E') // Taste "E"
- {
- done:=True;
- keyhit:=0;
- }
-
- IF (RcNr > RcCnt)
- RcNr:=RcCnt;
- IF (RcNr < 1)
- RcNr:=1;
- IF (keyhit=0)
- {
- keyhit:=1;
- print(gotoxy(BlkGr+2,40),Farbe3,"/ Nr.",RcNr," von ",RcCnt," ");
- RxGetDBFRec(RcNr);
- RxDBFPrint();
- }
- } while (done = False);
- }
- close(fd);
- print("\f");
- log("#dBaseGet Ende");
- }
-
-