home *** CD-ROM | disk | FTP | other *** search
- (*---------------------------------------------------------------------------*)
- (* DFDATEI.INC (Datei senden und empfangen) *)
-
- OVERLAY PROCEDURE Datei_Senden;
-
- VAR Name : STRING[16];
- Zeichen : CHAR;
- Dummy : BOOLEAN;
- Datei1 : TEXT;
-
- BEGIN
- ClrScr;
- WriteLn(Inv_Ein,'Datei Senden',Inv_Aus);
- WriteLn;
- REPEAT
- Write('Namen der zu sendenden Datei (Abbruch mit leerer Eingabe):');
- ReadLn(Name);
- IF Length(Name) > 0 THEN BEGIN
- Assign(Datei1,Name);
- (*$I-*) (* IO-Kontrolle abschalten *)
- ReSet(Datei1)
- END
- (*$I+*)
- UNTIL (NOT IOFEHLER) OR (Length(Name) = 0) ;
-
- IF Length(Name) > 0 THEN BEGIN
- REPEAT UNTIL OutStatus;
- OutSIO(XON);
- WHILE NOT Eof(Datei1) DO BEGIN
- IF InpStatus THEN BEGIN
- Zeichen := INPSIO;
- IF Zeichen = XOFF THEN
- warte_auf_XON;
- gib_Zeichen_aus(Zeichen);
- IF Protokoll_An THEN
- PushBuffer(Zeichen)
- END;
- IF Eoln(Datei1) THEN BEGIN
- ReadLn(Datei1);
- Zeichen := CR
- END
- ELSE
- Read(Datei1,Zeichen);
- REPEAT UNTIL OutStatus;
- OutSIO(Zeichen);
- IF NOT(VollDuplex) THEN
- gib_Zeichen_aus(Zeichen);
- IF Zeichen = CR THEN
- Delay(Zeit)
- END;
- OutSIO(CTRL_Z);
- (*$I-*);
- Close(Datei1);
- (*$I+*)
- Dummy := IOFEHLER
- END
- END;
-
-
- (* Prozedur DATEI_EMPFANGEN sichert eine beliebig lange Datei auf Diskette
- nur der Diskettenplatz begrenzt die Groesse, Vorsicht!!, Diskettenfehler
- werden nicht abgefangen *)
-
-
- OVERLAY PROCEDURE Datei_Empfangen;
-
- CONST SBSize = 1024; (* Datei gepuffert empfangen *)
-
- VAR ch, ConZeichen,
- Zeichen : CHAR;
- Name : STRING[14];
- i, SBZaehler : INTEGER;
- Dummy : BOOLEAN;
- Datei1 : TEXT;
- SmallBuf : ARRAY[1..SBSize] OF CHAR;
-
- BEGIN
- ClrScr;
- WriteLn(Inv_Ein,' Datei empfangen ',Inv_Aus);
- WriteLn; WriteLn;
- SBZaehler := 1;
- ConZeichen := ' ';
- REPEAT
- Write (' Namen der zu empfangenden Datei (Abbruch mit leerer Eingabe): ');
- ReadLn(Name);
- IF Length(Name) > 0 THEN BEGIN
- Assign(Datei1,Name);
- (*$I-*)
- ReWrite (Datei1)
- (*$I+*)
- END;
- UNTIL (NOT IOFEHLER) OR (Length(Name) = 0);
- IF Length(Name) > 0 THEN BEGIN
- WriteLn(' Starten sie bitte die Uebertragung mit ',
- 'dem vereinbarten Startzeichen !' );
- WriteLn;
- REPEAT
- IF KeyPressed THEN BEGIN
- IF SBZaehler < SBSize - 20 THEN
- ConZeichen := GetKey
- ELSE ConZeichen := XOFF;
- IF NOT VollDuplex THEN
- Write (ConZeichen);
- IF (NOT VollDuplex) AND Protokoll_An THEN
- PushBuffer(ConZeichen);
- IF ConZeichen <> ESC THEN BEGIN
- IF OutStatus THEN
- OutSIO(ConZeichen);
- IF (ConZeichen = CR) AND (LineFeed) THEN BEGIN
- IF OutStatus THEN
- OutSIO(LF);
- IF Protokoll_An AND (NOT VollDuplex) THEN
- PushBuffer(LF)
- END
- END
- END;
- IF InpStatus THEN BEGIN
- Zeichen := INPSIO;
- gib_Zeichen_aus(Zeichen);
- SmallBuf[SBZaehler] := Zeichen;
- SBZaehler := Succ(SBZaehler)
- END
- ELSE
- IF SBZaehler > SBSize - 20 THEN BEGIN
- FOR i := 1 TO Pred(SBZaehler) DO BEGIN
- IF SmallBuf[i] IN [LF,CR,' '..DEL] THEN
- Write(Datei1,SmallBuf[i]);
- IF SmallBuf[i] = CR then
- WriteLn(Datei1)
- END;
- SBZaehler := 1;
- IF OutStatus THEN
- OutSIO(XON)
- END;
- UNTIL (ConZeichen = ESC) OR (Zeichen = CTRL_Z);
- FOR i := 1 TO Pred(SBZaehler) DO BEGIN
- IF SmallBuf[i] IN [LF,CR,' '..DEL] THEN
- Write(Datei1,SmallBuf[i]);
- IF SmallBuf[i] = CR THEN
- WriteLn(Datei1)
- END;
- Close(Datei1);
- Dummy := IOFEHLER
- END
- END;
-
- (* Ende DFDATEI.INC *)
- (*---------------------------------------------------------------------------*)