Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)

[es] :: Pascal / Delphi / Kylix :: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)

Strane: 1 2

[ Pregleda: 4358 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)12.01.2005. u 19:25 - pre 234 meseci
1) Kako da napravim Timer u runtime-u. Kaze [Error] AnimBckgnd.pas(50): Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter' kad pokusam da stavim obicnu proceduru na OnTimer. Molio bih primer (malo code tagova :)

2) Imam tekstualni fajl koji ovako izgleda:

Code:

111
1 1
111


Zanima me kako citanjem slovo po slovo da mi kreira dinamicki niz slika ovako poredjanih:
Code:

----------------------
|      |       |     |
|      |       |     |
----------------------
|      |       |     |
|      |       |     |
----------------------
|      |       |     |
|      |       |     |
----------------------

(sve kockice treba iste velicine da budu : kockice=slike{TImage})
...s tim da se u polju 5 (srednja kockica) ne pojavi slika (na mestu space-a da se nista ne pojavljuje ali da odvaja toliku razdaljinu, kao za sliku)... evo sta sam ja skrabao (nedostaje glavni deo)...

Code:

function LoadWorld(matrix_file,bitmap_extension:string;block_width,block_height:integer;parent:TForm):boolean;
var
  //array of images which represents blocks
  blocks:array of TImage;
  //variables for filesize
  nSize:integer;
  hfile:thandle;
  strSize:string;
  //variables for loading into buffer
  p:char;
  buffer:string;
  a:textfile;
  //for going through matrix
  loop:integer;
  trenutni_red,trenutna_kolona:integer;
begin
//suppose that there was error
  Result:=false;
//get file size
  hfile:=CreateFile(pchar(matrix_file),0,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
  nSize:=GetFileSize(hfile,nil);
  CloseHandle(hfile);
  SetLength(strSize,20);
  Str(nSize,strSize);
//set number of blocks to filesize (that's max)
  SetLength(blocks,StrToInt(strSize));
//load file into buffer
  assignfile(a,matrix_file);
  reset (a);
      while not Eof(a) do
      begin
        Read(a, p);
        buffer:=buffer+p;
      end;
  closefile(a);
//now we need to go through matrix and to create images
trenutni_red:=1;
trenutna_kolona:=1;
  for loop:=1 to Length(buffer) do begin

  //izmedju ostalog, if buffer[loop]<>' ' then kreiraj blok

  end;
end;


...ne znam zasto volim da komentujem na engleskom :)

p.s. posle ovoga bi jednostavni...
LoadWorld('test.mtx','img',20,20,Form1);
...vrsio posao...

p0zdrav i hvala unapred

Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net.

Sajt: www.diy-fever.com


+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)12.01.2005. u 20:52 - pre 234 meseci
za prvo ne znam...
za drugo samo ukratko.
Code:

var Slike: array [1..10, 1..10] of TImage;
for i := 1 to BrojVrsta do
  for j := 1 to BrojKolona do
    begin
      Read(F, C);
      if C = '1' then
        begin
           Slike[i, j] := TImage.Create(Form1);
           Slike[i, j].Parent := Form1;
           Slike[i, j].Width := 100;
           Slike[i, j].Height := 100;
           Slike[i, j].Left := (i-1)*100;
           Slike[i, j].Top := (j-1)*100;
           //ovde nacrtaj nesto po slici
        end;
//...na kraju
for i := 1 to BrojVrsta do
 for j := 1 to BrojKolona do
   if Assigned(Slike[i, j]) then Slike[i,j].Free


btw, i ja volim komentare na engleskom

pozdrav
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)12.01.2005. u 23:26 - pre 234 meseci
Postuj liniju u kojoj dodeljujes odredjenu proceduru na OnTimer event. Ovako mozemo samo da nagadjamo.

Dodeljivanje procedure bi mislim trebalo Timer1.OnTimer := @NekaProcedura. A NekaProcedura :

Code:

procedure TForm1.NekaProcedura(Sender: TObject);
begin
...
end;
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.verat.net.



+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)13.01.2005. u 02:11 - pre 234 meseci
Citat:

Timer1.OnTimer := @NekaProcedura


Samo bez @.
A za sta ti to treba, jeli JaHvrame? ;-)
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)13.01.2005. u 13:45 - pre 234 meseci
probao sam sa Timer1.OnTimer := NekaProcedura; i daje onu gresku. Kaze ne moze procedura, mora TNotifyEvent... :(

a sta ce mi... ma nesto za onaj engine :P (salim se)
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
*.zaslon-telecom.si.



Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)13.01.2005. u 14:02 - pre 234 meseci
Procedura ti mora biti clan klase (TForm, recimo) i mora imati parametar (Sender: TObject).

Tako ti je procedura postala TNotifyEvent :)

Evo ti i malo kooda:

Code:

procedure TForm1.BlaBla(sender:TObject);
begin
  ShowMessage('sale');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.OnTimer := BlaBla;
end;


ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

Voodoo
Novi Beograd

Član broj: 3508
Poruke: 488
*.beograd-2.tehnicom.net.



+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)13.01.2005. u 15:42 - pre 234 meseci
Mislim da bi uništavanje dinamički kreiranih objekata trebalo da se vrši u obrnutom redosledu (tj. od poslednjeg kreiranog). Znam da meni nije htelo kad sam radio od prvog do zadnjeg...
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)14.01.2005. u 16:26 - pre 234 meseci
ali kako da bude u klasi TForm kad se radi o UNIT-u i tamo nema formova :(

edit: @bancika - a kako da izvalim kad je kraj reda sa onim tvojim kodom?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)14.01.2005. u 17:23 - pre 234 meseci
Mislim da to nije bitno, mislim da je samo bitno da se procedura kvalifikuje kao TNotifyEvent po broju i tipu parametara, ali nisam probao
(jer TNotifyEvent je procedure of object, like ANY object).
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)14.01.2005. u 17:35 - pre 234 meseci
Evo ti kompletan kod (koji radi):
Code:

unit MyClass;

interface

uses
  Classes, ExtCtrls;

type
  TMyClass = class
    MyTimer: TTimer;
  private
    MyOwner: TComponent;
    procedure DoSomething(Sender: TObject);
  public
    constructor Create(AOwner: TComponent);
  end;

implementation

{ TMyClass }

constructor TMyClass.Create(AOwner: TComponent);
begin
  MyOwner := AOwner;
  MyTimer := TTimer.Create(MyOwner);
  MyTimer.OnTimer := DoSomething;
  //MyTimer.Interval := 10;
  //MyTimer.Enabled := True;
end;

procedure TMyClass.DoSomething(Sender: TObject);
begin
  //Do Timed Something...
end;

end.
 
Odgovor na temu

sasas
Saša Slavnić
radim za neke švabe

Član broj: 35478
Poruke: 617
195.246.3.*



Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)14.01.2005. u 22:51 - pre 234 meseci
Citat:
_v!rus_: ...mislim da je samo bitno da se procedura kvalifikuje kao TNotifyEvent po broju i tipu parametara, ...
(jer TNotifyEvent je procedure of object, like ANY object).


Upravo tako, ja sam TForm stavio kao primer, stvar je samo u prenosu parametara.

ss.
When something is hard to do, then it's not worth doing.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 12:30 - pre 234 meseci
ok, uspeo sam ono za timer, i skapirao sam sad kako to ide. Hvala (pogledajte attach)

ono za slike nisam ni probao jer je za novi red #13 pa #10, tako? e sad, kako to u kodu da... bla bla :)

Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Prikačeni fajlovi
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 12:47 - pre 234 meseci
ako znas dimenzije matrice onda nije problem:
Code:

for i := 1 to n do
begin
 for j := 1 to m do
  Read(F, a[i,j]);
 ReadLn(F); //prelaz u novi red, preskace #10 i #13
end;

a ako ne znas onda
Code:

i := 0;
while not Eof(F) do
begin
 Inc(i);
 ReadLn(F ,s); //s: string;
 for j := 1 to Length(s) do
  a[i, j] := s[j]l
end;

pozdrav
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 14:52 - pre 234 meseci
e, to mi je trebalo... valjda :)

probacu pa javljam kasnije... veceras... sutra...
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 16:35 - pre 234 meseci
ono mi nije odgovaralo, pa sam zasuko rukave :)

evo skoro gotove funkcije:
Code:

function LoadWorld(matrix_file,graphics_directory,bitmap_extension:string;x,y,block_width,block_height:integer;parent:TForm):boolean;
var
  //array of images which represents blocks
  blocks:array of TImage;
  //variables for filesize
  nSize:integer;
  hfile:thandle;
  strSize:string;
  //variables for loading into buffer
  p:char;
  buffer:string;
  a:textfile;
  //for going through matrix
  loop:integer;
  trenutni_red,trenutna_kolona:integer;
begin
//suppose that there was error
  Result:=false;
//get file size
  hfile:=CreateFile(pchar(matrix_file),0,FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
  nSize:=GetFileSize(hfile,nil);
  CloseHandle(hfile);
  SetLength(strSize,20);
  Str(nSize,strSize);
//set number of blocks to filesize (that's max)
  SetLength(blocks,StrToInt(strSize));
//load file into buffer
  assignfile(a,matrix_file);
  reset(a);
      while not Eof(a) do
      begin
        Read(a, p);
        buffer:=buffer+p;
      end;
  closefile(a);
//now we need to go through matrix and to create images
trenutni_red:=0;
trenutna_kolona:=0;
 for loop:=1 to Length(buffer) do begin
 //increase column on every step
 Inc(trenutna_kolona);
   //when reach #13#10 (eoln) then reset column and increase row
   if buffer[loop]+buffer[loop+1] = #13#10 then begin
   trenutna_kolona:=0;
   Inc(trenutni_red);
   end;
  //now create images
  if (buffer[loop] <> ' ') and (buffer[loop] <> #13) and (buffer[loop] <> #10) then begin
    blocks[loop] := TImage.Create(parent);
    blocks[loop].Parent := parent;
    blocks[loop].Width := block_width;
    blocks[loop].Height := block_height;
      if (trenutni_red = 0) and (trenutna_kolona = 0) then begin
        blocks[loop].Left := x;
        blocks[loop].Top := y;
      end else begin
        blocks[loop].Left := trenutna_kolona * block_width;
        blocks[loop].Top := trenutni_red * block_height;
      end;
    blocks[loop].Transparent := true;
    blocks[loop].AutoSize := false;
    blocks[loop].Stretch := true;
    blocks[loop].Visible := true;
    blocks[loop].Picture.RegisterFileFormat(bitmap_extension,'Bitmap file',TBitmap);
      if graphics_directory <> '' then blocks[loop].Picture.LoadFromFile(graphics_directory+'\'+buffer[loop]+'.'+bitmap_extension)
        else blocks[loop].Picture.LoadFromFile(buffer[loop]+'.'+bitmap_extension);
  end;
 end;
end;


e, problem je sto mi je prvi red uvucen za jedan blok (dodam space u prvom redu mtx fajla i problem resen) i drugi problem: ne slusa me :) tj. ne postavlja matricu slika gde ja hocu (zadato u pozivu funkcije:0,0) vec ga baci ko zna gde

pogledati attach (i ispraviti ako je moguce)
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Prikačeni fajlovi
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 17:01 - pre 234 meseci
Mnogo si zakomplikovao u ovoj funkciji gore... Okacicu ovde malo kasnije novu fju.

Jedno pitanje - da li je neophodno da kreiras onoliko TImage objekata koliko je zapisano u mtx fajlu ?
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 18:00 - pre 234 meseci
Code:

procedure LoadWorld(matrix_file, graphics_directory, bitmap_extension : String;
                    X, Y, block_width, block_height : Integer;
                    target : TImage);
var
  srcbmp : TBitmap;
  SFile  : TextFile;
  FLine  : String;
  C1     : Integer;
  YC     : Integer;
begin
  If (graphics_directory <> '') and
     (graphics_directory[Length(graphics_directory)] <> '\') Then
    graphics_directory := graphics_directory + '\';

  srcbmp := TBitmap.Create;
  srcbmp.Transparent := TRUE;

  YC := 0;
  target.Width := 0;
  target.Height := 0;
  AssignFile(SFile, matrix_file);
  Reset(SFile);
    While not Eof(SFile) Do
    Begin
      ReadLn(SFile, FLine);

      Inc(YC);
      If target.Width < Length(FLine) * block_width Then
        target.Width := Length(FLine) * block_width;
      If target.Height < YC * block_height Then
        target.Height := YC * block_height;

      For C1 := 1 to Length(FLine) Do
        If (FLine[C1] <> ' ') and
           (FileExists(graphics_directory + FLine[C1] + '.' + bitmap_extension)) Then
        Begin
          srcbmp.LoadFromFile(graphics_directory + FLine[C1] + '.' + bitmap_extension);
          srcbmp.TransparentColor := srcbmp.Canvas.Pixels[0, 0];
          target.Canvas.Draw((X + C1 - 1) * block_width, (Y + YC - 1) * block_width, srcbmp);
          srcbmp.FreeImage;
        End;
    End;
  CloseFile(SFile);

  srcbmp.Free;
end;


Evo nove procedure. Sve se crta na jednom TImage objektu. Elem, ima jedna greska - u linijama If target.Height < YC * block_height Then i target.Height := YC * block_height; se podesava visina slike... I posle izlaska iz procedure visina slike je dobra, ali ne znam zasto nece da se vidi kako treba...

Radio sam arkanoid pre godinu-dve na veoma slican nacin kao ovaj tvoj, ako zelis mogu da nadjem source pa da ti posaljem na mail.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)15.01.2005. u 22:27 - pre 234 meseci
pa ja sam mislio na odvojene slike zbog prostora izmedju slika gde su space-ovi - zbog collision-a (ako se tako pise)

posalji i arkanoid source na avramyu at gmail dot com

sto se ovoga tice mislim da bi bolje bilo sa vise slika... neka nova ideja za detekciju sudara sa zidovima?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
*.verat.net.

Sajt: https://avramovic.info


+46 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)16.01.2005. u 10:31 - pre 234 meseci
ovako sam ga pomerio ulevo, ali nije to to :)

Code:

...
blocks[loop].Left := (trenutna_kolona * block_width) - (block_width * 2);
..


ali ovim mi otpada x i y pozicioniranje vec ostaje samo 0,0 :(
mozda da radim sa frame-ovima?
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)16.01.2005. u 11:37 - pre 234 meseci
Bug oko pozicioniranja slika mozes resiti tako sto ces liniju Inc(trenutna_kolona); pomeriti pred kraj for petlje. (znaci posle kreiranja slicica)

Kasnije cu ti poslati arkanoid (samo da nadjem source), i sam sam u pocetku mislio da je najbolje raditi sa TImage, ali kad sam imao preko 70-tak kreiranih slicica cela igra je radila sporo... Onda sam presao na PaintBox, i na kraju sam zakljucio da je najbolje da radim preko DirectX-a, pa sam odustao :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Dva nevezana pitanja (Timer i nesto oko citanja fajlova i slika bla bla)

Strane: 1 2

[ Pregleda: 4358 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.