[Back to COMM SWAG index] [Back to Main SWAG index] [Original]
{
³ Post more code so we can see where you're going wrong.
I'm just posting things that are relevant, i.e. no error trapping code
and such. Also I've deleted the original comments, as they are in
Norwegian, and added some new in English.
Also, I use one heck of a stack. The program worked fine on my machine,
I took it a friend and on his machine the default stack was too little.
When I came back the exact same program that I had been using on my
machine also started complaining about the stack size. Could pointers
help in reducing stack?
This is the array I use to read BBS entries into from the text file
}
TBbsList = Record
BBSName : Array25; {All ArrayXX are defined as Array[1..XX] of Char}
BBSPhone : Array17;
end;
TBBSArray = Array [1..1000] of TBBSList;
Procedure Write2Fon(bbsnumber : Integer);
{This is the definition for the Telix .fon file format}
TYPE
tddf_header = record
id : LongInt; (* should be hex 2e2b291a *)
ddf_vers : Integer; (* currently 1 *)
num_entries : Integer; (* # of entries in directory, from 1 to 1000 *)
pencrypted : Char; (* currently 0, will be used for encryption *)
spare : Array55;
end;
tdd_entry = record
name : Array25; (* entry name *)
number : Array17; (* phone number *)
baud : Byte; (* baud rate, see below *)
parity : Byte; (* parity: 0 = none, 1 = even, 2 = odd *)
data : Byte; (* number of data bits, 7 or 8 *)
stop : Byte; (* number of stop bits, 1 or 2 *)
script : Array12; (* linked script file name *)
lastcall : Array6; (* last call date, stored in ASCII, w/o slashes *)
totcalls : Word; (* total successful calls to this entry *)
terminal : Byte; (* terminal type to use, see below *)
protocol : Char; (* default protocol; first letter *)
toggles : Byte; (* bit 0: local echo - 0=off, 1=on *)
(* bit 1: add LFs - 0=off, 1=on *)
(* bit 2: BS trans - 0=destructive, 1=not *)
(* bit 3: BS key - 0=sends BS, 1=sends DEL *)
filler1 : Char;
filler2 : Char;
dprefnum : Byte; (* dialing prefix number to use when dialing *)
password : Array14; (* password for this entry *)
end;
VAR
FonFile : File;
BBSCount : Integer;
SPcount : Byte;
SpareArr : Array55;
DDF_Header: Tddf_Header;
DD_Entry : Array[1..500] of Tdd_Entry;
tname : array25;
tnumber : array17;
tscript : array12;
tlastcall : array6;
tpassword : array14;
bname, bnumber, bscript, blastcall, bpassword : String;
BEGIN
Assign(FonFile, 'c:\modem\telix\test.fon'); {Yes it's hard coded right now}
ReWrite(FonFile, 1);
SPcount := 1;
While SPcount < 56 do
Begin
SpareArr[SPcount] := #0;
Inc(SPCount);
end;
With DDF_Header DO Begin
ID := $2e2b291a;
DDF_Vers := 1;
Num_Entries := BBSNumber;
Pencrypted := '0';
Spare := SpareArr;
end;
bscript := 'xxxxxx'; {Just some hard coding to get things to work}
blastcall := ' ';
bpassword := 'xxxxxx';
String2Arr12(bscript, tscript); {I call a simple procedure to convert}
{from string to array of char}
String2Arr6(blastcall, tlastcall);
String2Arr14(bpassword, tpassword);
For BBSCount := 1 to BBSNumber do
Begin
With DD_entry[BBSCount] DO
Begin
name := BBSArray[BBSCount].BBSName;
number := BBSArray[BBSCount].BBSPhone;
baud := 5;
parity := 0;
data := 8;
stop := 1;
script := tscript;
lastcall := tlastcall;
totcalls := 0;
terminal := 1;
protocol := 'Z';
toggles := 0000;
filler1 := 'A';
filler2 := 'B';
dprefnum := 1;
password := tpassword;
end;
end;
BlockWrite(FonFile, DDF_Header, SizeOf(DDF_Header));
For BBSCount := 1 to BBSNumber do
Begin
BlockWrite(FonFile, DD_Entry[BBSCount], SizeOf(DD_entry[BBSCount]));
{This could be the wrong way of doing it?}
Inc(BBSCount);
end;
Close(Fonfile);
end;
[Back to COMM SWAG index] [Back to Main SWAG index] [Original]