România
Roportal.ro

About Delphi ....pls HELP ...!

Început de CeanyB, Mie 2 mai 2007 · 27 răspunsuri · 10.044 vizualizări

radu84360 mesaje#21
CeanyB a scris:
sal....am rez cu alea...

la calcul de siruri...insa....ceva neprevazut....

1) nu gasesc nici o procedura sa afisez un nr real....sub forma de text, adica string....

floattostr cred ca ar fi raspunsul ??? oare ??? , dar imi afiseaza tot un nr intreg, probabil trebuie "umblat" la nr de zecimale afisate, sau...in fine...nu stiu....

2) cum se pot genera random litere ?

3) se pot genera random cifre dintr-un interval....? .....

deocamdata atat.....daca binevoiesti sa ma ajuti cu niste raspunsuri/indicatii

o zi buna...

1) cauta in help functia format

2) iei un vector si faci random de i, avand vector

3) faci un random normal si verifici daca valorile returnate is in interval

numa bine

CeanyB20 mesaje#22

la pct 1 nu am inteles din pacate nik de acolo.....ca parametru este si un array......care nu stiu ce face...

poti pls sa mi dai un ex concret....?

un_string := FormatFloat('0.00', nr_real);

cred ca am gasit....... :D

ms mult...

as mai avea o intrebare:

cum pot face ca un punct sa descrie un cerc pe ecran, cu viteza variabila ?

[ imi trebuie pt ca sa fac un ac indicator

m-am gandit la moveTo ...lineTo ]

am inceput sa gandesc un algoritm dar nu stiu daca e bun,,,,

cu 2 for uri.....si sa lucrez separat pt cele 4 cadrane....dar in felul asta se cam anuleaza faza cu viteza puctului...

[ la inceput vreau sa se miste repede...si apoi....dupa un interval stabilit de mine, in funct de timp..... sau dupa numarul de curse efectuate, sa isi incetineasca viteza ....ajungand in cele din urma sa se opreasca ]

pt prima varianta, cea cu timp...

merge sigur un for , si un delay in funtie de contorul for ului

pt cazul cu nr de rotatii efectuate..nu am idee inka cum sa testez si sa realizez decelerarea [matematika asta :) ]

o sa ma mai gandesc si eu la solutii oricum....as fi vrut doar sa mi spui cam cum ai gandi tu...eu cred ca incerc sa construiesc dupa variantele mele...ca sunt curios ce iese....[sau ce nu iese ]

radu84360 mesaje#23

asa desenezi un cerc(mai bine spus o elipsa, insa tragi din coordonate si o faci cerc :spiteful: )

procedure TForm1.Button2Click(Sender: TObject);

begin

with form1 do

begin

Canvas.Brush.Color := clRed;

Canvas.Brush.Style := bsDiagCross;

Canvas.Ellipse(0, 0, Image1.Width, Image1.Height);

end;

end;

la fel uita-te si aici ca am gasit ceva exemplu:

http://www.angelfire.com/tx4/cus/shapes/delphi.html

cu delay-ul inca nu stiu.

sincer, nu m-am gandit pana acuma sa fac asa ceva. din cate am vazut cand proprietatea canvas nu are circle, iar la desenare, inca nu mi-am dat seama cum pui un delay

CeanyB20 mesaje#24

deci cred ca nu ai citit bine....

eu vreau sa plimb un punct pe form, in forma de cerc, cu viteza variabila...[pentru un ac indicator, ca de ceas...]

adik vreau sa simulez miscarea unei rulete, pt asta imi trebuia...

numai ca miscarea acului nu vreau sa aiba de-a face neaparat cu functia timer...ci eventual cu sleep...[variabil...]

centrul va fi centrul formului...si cred ca necesita 2 for uri , pt coord x,y........si 4 cazuri, pt fiecare cadran in parte....

radu84360 mesaje#25
CeanyB a scris:
deci cred ca nu ai citit bine....

eu vreau sa plimb un punct pe form, in forma de cerc, cu viteza variabila...[pentru un ac indicator, ca de ceas...]

adik vreau sa simulez miscarea unei rulete, pt asta imi trebuia...

numai ca miscarea acului nu vreau sa aiba de-a face neaparat cu functia timer...ci eventual cu sleep...[variabil...]

centrul va fi centrul formului...si cred ca necesita 2 for uri , pt coord x,y........si 4 cazuri, pt fiecare cadran in parte....

ai mai reusit ceva cu codul asta?

CeanyB20 mesaje#26

nu am avut timp....dar cand o sa fiu mai liber, prob in vacanta, dupa sesiune..o sa ma mai ocup de problema..

momentan vreau doar sa lamuresc bucata de cod referitoare la afisarea unui nr real sub forma de string...pt ca nu imi merge bine...

********************************

procedure TForm3.Button2Click(Sender: TObject);

var i , n : integer;

rez1 : real48 ;

txxt : string;

begin

if (Form3.RadioButton3.Checked = true) then

begin

rez1 := 0;

n := StrToInt(Form3.Edit1.Text);

for i := 1 to n do rez1 := rez1 + ( 1 div i );

txxt := FormatFloat('0.000', rez1);

Form3.Edit2.Text := txxt;

end;

if (Form3.RadioButton4.Checked = true) then

begin

rez1 := 0;

n := StrToInt(Form3.Edit1.Text);

for i := 1 to n do rez1 := rez1 + ( i div ( i + (i+1) ) );

txxt := FormatFloat('0.000', rez1);

Form3.Edit2.Text := txxt;

end;

end;

*******************

afiseaza 1, respectiv 0....pt primul /al doilea sir....pt orice valori....

nu mi dau seama care-i problema...si nici nu am gasit nicaieri exemplu concret....

radu84360 mesaje#27

aici am inceput ruleta ta. e rudimentara insa o dezvolti tu

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

Memo1: TMemo;

Button2: TButton;

procedure FormShow(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);

begin

Image1.Enabled:=true;

Image1.Visible:=true;

Image1.Canvas.Pixels[10,10]:=clWhite;

end;

procedure TForm1.Button2Click(Sender: TObject);

var p:double;

x,y,i,j,r:integer;

x1,y1,x2,y2:integer;

b:boolean;

sl:DOUBLE;

begin

p:=0;

r:=100;

x1:=0;y1:=0;

while p<=2*pi do

begin

x:=round(100*sin(p))+(Image1.Width div 2) ;

y:=round(100*cos(p))+(Image1.Height div 2);

with Image1.Canvas do

Pixels[x,y]:=clRed;

p:=p+1/r;

end;

b:=true;

i:=0;

randomize;

while j<1000 do

j:=random(2000);

Memo1.Lines.Add('j ' +inttostr(j));

sl:=3;

while b do

begin

p:=2*pi;

Memo1.Lines.Add(inttostr(i));

Application.ProcessMessages;

while p>0 do

begin

with Image1.Canvas do

begin

pen.Color:=clWhite;

moveto(Image1.Width div 2,Image1.Height div 2);

lineto(x1,y1);

Application.ProcessMessages;

end;

x:=round(100*sin(p))+(Image1.Width div 2) ;

y:=round(100*cos(p))+(Image1.Height div 2);

x1:=x;

y1:=y;

with Image1.Canvas do

begin

pen.Color:=clBlack;

moveto(Image1.Width div 2,Image1.Height div 2);

lineto(x,y);

inc(i);

Application.ProcessMessages;

end;

Sleep(round(sl));

Application.ProcessMessages;

if (i mod 50)=0 then

sl:=sl+0.5;

p:=p-1/r;

if i=j then

begin

b:=false;

Memo1.Lines.Add(inttostr(i));

break;

end;

end;

Application.ProcessMessages;

end;

end;

end.

cu chestia cu ruleta deschide un topic nou, ca asa e greu de urmarit

numa bine

Editat Joi 7 iun 2007 14:50

CeanyB20 mesaje#28

sal...

mersi pt timpul pierdut...da, cam la asta ma refeream....pt ca vreau sa realizez un cadran gen "roata norocului"....un ac indicator care se roteste cu viteza mare, apoi dupa un anumit timp....obtinut cu random....isi incetineste viteza ,ajungand sa se opreasca in final....cam asta am vazut ca face si codul tau in linii mari, desi nu am chiar inteles unele chestii...asa ca ramane sa fac totul de la capat...inspirandu-ma si din codul de la tine...

problema e ca acum sunt in sesi....si in maxim 2 satamani mi am rezolvat sa ma angajez..[nu intentionam dar s-a ivit ocazia si nu as vrea sa o ratez: autocad, salar 8 milioane...program flexibil...]

si nu stiu cu toate astea cand o sa mai am timp si de delphi...

eu sper ca nu m-am agitat sa incep sa invat totusi degeaba...

...mai vb...ms pt rabdare...

bafta la toate...byee

← Înapoi la Programare