1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| procedure TForm1.Lecture_Et_Test;
var
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
Begin
Form1.ProgressBar1.Min := 1;
Form1.ProgressBar1.Max := 1000;
Form1.ProgressBar1.Step := 1;
Form1.ProgressBar1.Position := Form1.ProgressBar1.Min ;
F_Input := '\\Ocetool3\DATA (D)\SERVER\Essai\'+Msk_Input.Text;
AssignFile(FromF, F_Input);
Reset(FromF, 1); { Taille d'enregistrement = 1 }
F_Output := '\\Ocetool3\DATA (D)\SERVER\Essai\OMR_'+Msk_Input.Text;
AssignFile(ToF, F_Output); { Ouverture du fichier de sortie }
Rewrite(ToF, 1); { Taille d'enregistrement = 1 }
Canvas.TextOut(48, 190, 'Copie de ' + IntToStr(FileSize(FromF)) + ' octets...');
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
// Recherche du bloc de début unique: 2B D3 04 D2 01 C5 (EBCDIC)
// et extraction des 13 signes OMR qui suivent,
// p.ex. BB 04 BB BB 40 40 40 40 40 40 BB 40 BB
// ] ] ] (40 = space) ] ]
// ce bloc se termine par 5A
{ SOS ici ! }
BlockWrite(ToF, Buf, NumRead, NumWritten);
Self.ProgressBar1.StepIt;
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF); |
Partager