нашел самый медленный, бесплатный mysql
с потоком разобрался, пока закачивает, формой можно играться
я не стал трогать
synchronize(AddToDbCb); = т.к. тупить начинает.
И не уверен:
Код:
cs:TCriticalSection;
CS.Enter;
= нужно ли вообще это?
Код:
type
TInsertImageToDbCallBack = procedure(AFileName: String; ASize: Integer) of object;
private
{ Private declarations }
public
procedure FileImg(const dirName:string; ACallBack : TInsertImageToDbCallBack);
procedure AddToMemoCb(AFileName: String; ASize: Integer);
//procedure AddToDbCb(AFileName: String; ASize: Integer);
{ Public declarations }
end;
TSomeThread = class(tthread)
private
procedure AddToDbCb(AFileName: String; ASize: Integer);
protected
procedure execute; override;
end;
var
Form1: TForm1;
cs:TCriticalSection;
chek:boolean;
implementation
{$R *.dfm}
type
TFileItemData = class
AFileName : String;
ASize : Integer;
function toString : String;
end;
procedure TSomeThread.AddToDbCb(AFileName: String; ASize: Integer);
begin
form1.SqlConnection1.Open;
try
form1.SqlQuery1.SQL.Text := 'INSERT INTO test1 (id, name, reviews, size, attribute) VALUES (:id, :name, :reviews, :size, :attribute)';
form1.SqlQuery1.ParamByName('id').AsInteger := 1;
form1.SqlQuery1.ParamByName('name').AsString := AFileName;
form1.SqlQuery1.ParamByName('reviews').AsInteger := random(5);// Arews;
form1.SqlQuery1.ParamByName('size').AsInteger := ASize; //inttostr(imgsize);
form1.SqlQuery1.ParamByName('attribute').AsString := 'gggggg';
form1.SQLQuery1.ExecSQL;
form1.Memo1.Lines.Add('Запись_добавлена='+Afilename+inttostr(ASize));
finally
form1.SqlConnection1.Close;
end;
end;
procedure TSomeThread.execute;
var
obj : TFileItemData; i:integer;
begin
inherited;
CS.Enter;
//synchronize(AddToDbCb);
if form1.ListBox2.Count =14 then
begin
for i := 0 to form1.ListBox2.Count-1 do begin
obj := form1.ListBox2.Items.Objects[i] As TFileItemData;
AddToDbCb(obj.AFileName,obj.ASize);
form1.progressbar1.Position:=i;
end;
end;
end;
function TFileItemData.toString : String;
begin
Result := Format('FileName: %s; Size: %d',[AFileName,ASize]);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
NewThread: TSomeThread;
begin
NewThread:=TSomeThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpLower;
NewThread.Resume;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cs:=TCriticalSection.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
cs.Free;
end;
курсы для чайников с ноля можно???