home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
sonderh1
/
dfdatei.inc
< prev
next >
Wrap
Text File
|
1987-06-10
|
4KB
|
148 lines
(*---------------------------------------------------------------------------*)
(* 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 *)
(*---------------------------------------------------------------------------*)