объектно-ориентированное программирование delphi delphi создание компонентов в run-time delphi tcomponent
Пытаюсь сделать MySQL соединение.. Делаю все как написано здесь http://www.interface.ru/home.asp?artId=4937 Не понял фразы: Но сделал так: Code: procedure TForm1.MySQL1Click(Sender: TObject); begin if FMySQL.Connect('localhost', 'root', '1111', 'dbname', '3306', '', false, 0) then ShowMessage('connected ok!'); end; procedure TForm1.FormCreate(Sender: TObject); begin MySQLClient := TMySQLClient.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin MySQLClient.Free; if MySQLResult <> nil then MySQLResult.Free; end; В итоге ошибка: [Error] Unit1.pas(34): Undeclared identifier: 'FMySQL' 34 строка это там где FMySQL
[Error] Unit1.pas(34): There is no overloaded version of 'connect' that can be called with these arguments
Вызываешь с неправильными параметрами, эта функция принимает: (string, string, string, string, Integer, string, Boolean, Integer) точно все передаешь?
Code: if (Edit1.text <> '') and (Edit3.text <> '') and (Edit5.text <> '') then begin Label7.Caption := 'Check connection...'; if MySQLClient.Connect(Edit1.Text, Edit3.Text, Edit4.Text, Edit5.Text, port, '', false, 0) then begin Label7.Caption := 'Connect is OK'; Label7.Font.color := RGB(69, 139, 0); end else begin Label7.Caption := 'Connection failed'; Label7.Font.color := RGB(255, 0, 0); end end; Надпись "Check connection..." почему-то никогда не высвечивается это при том что соединение проверяется секунды 3 если (если фейл)... Почему так? Делфи ж потовая штука
Коннект выполняется в этом же потоке. Метка может быть еще перерисоваться не успела, а поток сразу был занят другим, а после уже перерисовалась с новым кэпшеном Потоковая - если сам напрограммишь потоки Чисто ради интереса добавь Application.ProcessMessages; перед коннектом
Добавил и теперь всегда показывает... Мне это надо будет везде добавлять или где-то можно почитать про потоки?
Application.ProcessMessages; в принципе с потоками не связана, она разгружает очередь сообщений приложения. Просто знай что когда надо обновить интерфейс то следует ее вызывать. Про потоки тебе сейчас читать не обязательно, когда сам будешь писать многопоточное приложение тогда и читай.
PHP: function replacestr(const s, srch, replace: string): string; var i : integer; source: string; begin source:= s; result:= ''; repeat i:=pos(srch, source); if i > 0 then begin result := result + copy(source,1,i-1) + replace; source := copy (source,i+length(srch),maxint); end else result := result + source; until i<=0; end; Есть функция замены строки в строке. Как сделать чтобы она заменяла только первое найденное значение?
Меня интересует вопрос, как сделать так, что бы программа открывалась только тогда когда она лежит в каталоге с нужным мне файлом. И переименовывание файлов при закрытии\открытие определенного процесса. (можно гугла)
подскажите пожалуйста как сделать так чтобы графика подольше задерживалась? Code: Uses Graph,Crt; type ttt=array[0..1300]of double; var x, xt, yt, ya, yc, ye:ttt; ea,ec,ee: double; {pogreshnosti} a, b, e, h, p: double; ch, sh:char; n, i, j, k, grad:integer; ff:text; procedure graphic(init: integer; Ymin,Ymax: real; y,x:ttt; n,color,typ : integer; s: string); const maxx=1450; maxy=850; var tnum: string; nz,r,m,p,i,j,kl,kr,kt,kb,kf,k0,kbf,kx,ky,p0: integer; a1,hst,xma,xmi,yma,ymi,z: real; begin nz:=6; { kolichestvo yacheek v setke } r:=0; kl:=60; { otstup po x } kt:=40; { otstup po y } kr:=maxx-40; kb:=maxy-40; kx:=kr-kl; ky:=kb-kt; if(init=1) then begin xma:=b; xmi:=a; yma:=y[1]; ymi:=y[1]; if(not((Ymin=0) and (Ymax=0))) then begin ymi:=Ymin;yma:=Ymax end else begin for i:=0 to n do begin if(y[i]<ymi) then ymi:=y[i]; if(y[i]>yma) then yma:=y[i] end; a1:=abs(yma-ymi); yma:=yma+0.1*a1; ymi:=ymi-0.1*a1 end; { vkluchaem grafiku } m:=detect; {i:=egahi;} initgraph(m,i,'c:\bp\bgi'); { pereschityvaem koordinaty } cleardevice; setfillstyle(1,0); bar(2,2,maxx-2,maxy-2); setcolor (7); hst:=(yma-ymi)/nz; z:=yma; kf:=kt; p:=round(1.0/nz*ky); a1:=abs(z); j:=0; if(a1<1)then begin while(a1<1)do begin j:=j-1; a1:=a1*10 end end else if(a1>10)then begin while(a1>10)do begin j:=j+1; a1:=a1/10; end; end; for i:=0 to nz do begin a1:=z*exp(-j*ln(10)); str(a1:3:4,tnum); kbf:=textwidth(tnum)+6; moveto(kl-kbf, kf-6); outtext(tnum); line(kl,kf,kr,kf); z:=z-hst; kf:=kf+p end; moveto(kl-kbf, 15); str(j,tnum); outtext('1xE'); moveto(kl-kbf+25, 15); outtext(tnum); hst:=(xma-xmi)/nz; z:=xmi; kf:=kl; p:=round(1.0/nz*kx); for i:=0 to nz do begin a1:=abs(z); if(a1<10.0) then j:=2 else if(a1<100.0) then j:=1 else j:=2; str(z:4:j,tnum); kbf:=textwidth(tnum)+2; moveto(kf-kbf div 2,kb+4); outtext(tnum); line(kf,kb,kf,kt);z:=z+hst; kf:=kf+p end; p0:=kl+10 end;{end of "init"} setcolor(color); hst:=kx/(xma-xmi); a1:=ky/(yma-ymi); j:=0; if(typ=0) then j:=0; if(typ=1) then j:=3; if(typ=2)then j:=1; setlinestyle(j,1,1); settextstyle(DEFAULTFONT,HORIZDIR,1); kbf:=textwidth(s)+6; outtextxy(p0,10,s); moveto(p0+kbf,15); lineto(p0+kbf+20,15); p0:=p0+100; for i:=0 to n do begin k0:= round(kl+(x[i]-xmi)*hst); kf:= round(kb-(y[i]-ymi)*a1); if(i=0)then moveto(k0,kf); if(typ<3)then lineto(k0,kf) else begin circle(k0,kf,1); ellipse(k0,kf,0,360,4,4) end end end; function gtest(z:double): double; begin gtest:=sqr(cos(pi*z)); end; function f(u,v:double): double; begin f:=-pi*sin(2*pi*u)+p*(v-gtest(u)); end; procedure fora; begin ya[0]:=gtest(a); for i:=1 to n do ya[i]:=ya[i-1]+h*f(x[i-1],ya[i-1]); end; procedure forc; var k1, k2: double; begin yc[0]:=gtest(a); for i:=1 to n do begin k1:=h*f(x[i-1],yc[i-1]); k2:=h*f(x[i-1]+h, yc[i-1]+k1); yc[i]:=yc[i-1]+(k1+k2)/2; end; end; procedure fore; var k1, k2, k3, k4: double; begin ye[0]:=gtest(a); for i:=1 to n do begin k1:=h*f(x[i-1],yc[i-1]); k2:=h*f(x[i-1]+h/3, ye[i-1]+k1/3); k3:=h*f(x[i-1]+2/3*h, ye[i-1]+2/3*k2); ye[i]:=ye[i-1]+(k1+3*k2)/2; end; end; function pogr(uhty:ttt):double; var max: double; begin max:=0; for k:=1 to n do if abs(uhty[k]-gtest(a+k*h)) > max then max:=abs(uhty[k]-gtest(a+k*h)); pogr:=max; end; procedure tab; begin for i:=1 to 5 do begin ea:=pogr(ya); ec:=pogr(yc); ee:=pogr(ye); writeln('n=',n,' ea=',ea:12,' ec=',ec:12,' ee=',ee:12); n:=n*2; fora; forc; fore; end; end; begin clrscr; a:=0; {nachalo otrezka} b:=1; {konec otrezka} n:=20; {delaem srazy ravnomernuy setku,kol-vo uzlov n+1} h:=(b-a)/(n+1); {shag setki} grad:=50; p:=7; for i:=0 to grad do begin xt[i]:=a+i*(b-a)/(grad+1); yt[i]:=gtest(xt[i]); end; {(xt,yt)-eto koordinaty testovogo grafika} for i:=0 to n do x[i]:=a+i*h; fora; forc; fore; ea:=pogr(ya); ec:=pogr(yc); ee:=pogr(ye); writeln('n=',n,' ea=',ea:12,' ec=',ec:12,' ee=',ee:12); graphic(1,0,0,yt,xt,grad,11,0,'test'); graphic(0,0,0,ya,x,n,10,0,'a'); graphic(0,0,0,yc,x,n,4,0,'c'); graphic(0,0,0,ye,x,n,5,0,'e'); writeln('p=',p:4); if n<=20 then begin for j:=0 to n do begin writeln('j=',j:3,' ya=',ya[j]:12,' yc=',yc[j]:12,' ye=',ye[j]:12, ' ytest=',gtest(a+j*h):12); end; end; writeln; for j:=1 to 8 do begin ea:=pogr(ya); ec:=pogr(yc); ee:=pogr(ye); writeln('n=',n:5,' ea=',ea:10,' ec=',ec:12,' ee=',ee:14); if n=1300 then break; n:=n*2; if n>1300 then n:=1300; h:=(b-a)/(n+1); for i:=0 to n do x[i]:=a+i*h; fora; forc; fore; end; sh:=readkey; closegraph; end.
в процедуре график после moveto и lineto можешь повставлять произвольно слипы (sleep), к сожалению они не привязаны к времени, а к тактам процессора, так что на одном компе выверенные таймауты могут быть совсем другими на другом. Все нужно подбирать.
Ставлю indy 10 на 7 дельфи При компиляции IndyCore70.dpk выскакивают ошибки Первая ошибка вот к этой строке FIPVersion: TIdIPVersion; Вторая class function URLDecode(ASrc: string; AByteEncoding: TIdTextEncoding = nil Третья if TextIsSame(IdCharsetNames[Lcset], ACharSet) then begin Четвёртая IdCharsets,