Never mind, i got the array working.
Would this code load the array using sqlite?
sql := 'SELECT * FROM cbbs_users';
//Code to check for handle
Connect := TSQLite3Connection.Create(nil);
Query := TSQLQuery.Create(nil);
Trans := TSQLTransaction.Create(Connect);
Connect.Transaction := Trans;
Connect.DatabaseName := db_name;
Trans.StartTransaction; // opens Connect, EInOutError if SQLite not installed
Query.SQL.Text := sql;
Query.Database := Connect; //Connection for SQL
Query.Open;
for Count := 1 to 10000 do
begin
usersRecord[Count].user_number := Query.FieldByName('user_number').AsString;
usersRecord[Count].handle := Query.FieldByName('handle').AsString;
usersRecord[Count].firstname := Query.FieldByName('firstname').AsString;
usersRecord[Count].lastname := Query.FieldByName('lastname').AsString;
usersRecord[Count].password := Query.FieldByName('password').AsString;
usersRecord[Count].datejoined := Query.FieldByName('datejoined').AsString;
usersRecord[Count].email := Query.FieldByName('email').AsString;
usersRecord[Count].affils := Query.FieldByName('affils').AsString;
usersRecord[Count].fromwhere := Query.FieldByName('fromwhere').AsString;
usersRecord[Count].status := Query.FieldByName('status').AsString;
usersRecord[Count].bbssysop := Query.FieldByName('bbssysop').AsString;
usersRecord[Count].bbsname := Query.FieldByName('bbsname').AsString;
usersRecord[Count].seclevel := Query.FieldByName('seclevel').AsInteger;
usersRecord[Count].lastcall := Query.FieldByName('lastcall').AsString;
usersRecord[Count].notes := Query.FieldByName('notes').AsString;
end;
end;
ignoring the untestable setup procedure, I have to say yes, it should initialise the data to the single random record first fetched from the sqlite database.
two minor adjustments
1) after query.open always call query.first
2) avoid constant loops even when the number of records is known to be static. use a repeat until query.eof construct something along the lines of
...
...
...
Query.Open;
Query.First;
Count := Low(usersRecord);
Repeat
usersRecord[Count].user_number := Query.FieldByName('user_number').AsString;
usersRecord[Count].handle := Query.FieldByName('handle').AsString;
usersRecord[Count].firstname := Query.FieldByName('firstname').AsString;
usersRecord[Count].lastname := Query.FieldByName('lastname').AsString;
usersRecord[Count].password := Query.FieldByName('password').AsString;
usersRecord[Count].datejoined := Query.FieldByName('datejoined').AsString;
usersRecord[Count].email := Query.FieldByName('email').AsString;
usersRecord[Count].affils := Query.FieldByName('affils').AsString;
usersRecord[Count].fromwhere := Query.FieldByName('fromwhere').AsString;
usersRecord[Count].status := Query.FieldByName('status').AsString;
usersRecord[Count].bbssysop := Query.FieldByName('bbssysop').AsString;
usersRecord[Count].bbsname := Query.FieldByName('bbsname').AsString;
usersRecord[Count].seclevel := Query.FieldByName('seclevel').AsInteger;
usersRecord[Count].lastcall := Query.FieldByName('lastcall').AsString;
usersRecord[Count].notes := Query.FieldByName('notes').AsString;
Query.Next;
Inc(count)
until Query.Eof;
end;
that will load all the saved records to your array. If your goal was to simple initialize 1000 array cells to a single record then your previous code is more accurate.
EDIT:oops, forgot to increase the count variable as well. Corrected.