-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSPLIT.PAS
73 lines (69 loc) · 1.76 KB
/
SPLIT.PAS
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{ @author: Sylvain Maltais ([email protected])
@created: 2021
@website(https://www.gladir.com/linux-0)
@abstract(Target: Turbo Pascal, Free Pascal)
}
Program Split;
Var
NombreLigne,CurrLineNumber,CurrPrefix:Integer;
Err:Word;
FileSource,FileTarget:Text;
Prefix,CurrLine:String;
Function GetCurrPrefixNumber:String;
Var
S:String;
Begin
Str(CurrPrefix,S);
If Length(S)<2 Then S:='0'+S;
If Length(S)<3 Then S:='0'+S;
GetCurrPrefixNumber:='.'+S;
End;
BEGIN
If(ParamStr(1)='/?')or(ParamStr(1)='--help')or(ParamStr(1)='-h')or
(ParamStr(1)='/h')or(ParamStr(1)='/H')Then Begin
WriteLn('SPLIT : Cette commande permet de separer un fichier en plusieurs fichiers.');
WriteLn;
WriteLn('Syntaxe : SPLIT nombredeligne fichiersource [prefixe]');
End
Else
If ParamCount>=2Then Begin
Val(ParamStr(1),NombreLigne,Err);
If NombreLigne=0Then Begin
WriteLn('Le nombre de ligne doit superieur a 0 !');
End
Else
Begin
CurrPrefix:=1;
CurrLineNumber:=1;
If(ParamCount>=3)and(ParamStr(3)<>'')Then Begin
Prefix:=ParamStr(3);
End
Else
Prefix:='FILESPLT';
Assign(FileSource,ParamStr(2));
{$I-}Reset(FileSource);{$I+}
If IOResult=0Then Begin
Assign(FileTarget,Prefix+GetCurrPrefixNumber);
Rewrite(FileTarget);
While Not EOF(FileSource)do Begin
ReadLn(FileSource,CurrLine);
WriteLn(FileTarget,CurrLine);
Inc(CurrLineNumber);
If CurrLineNumber>NombreLigne Then Begin
CurrLineNumber:=1;
Close(FileTarget);
Inc(CurrPrefix);
Assign(FileTarget,Prefix+GetCurrPrefixNumber);
Rewrite(FileTarget);
End;
End;
Close(FileTarget);
Close(FileSource);
End
Else
WriteLn('Impossible de lire le fichier');
End;
End
Else
WriteLn('Nombre de parametres insuffisant !');
END.