www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Delphi -težave, napotki, nasveti...
Pojdi na stran Prejšnja  1, 2, 3, 4, 5  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
piflar
Član
Član



Pridružen-a: Čet 06 Dec 2007 17:56
Prispevkov: 246
Aktiv.: 1.15
Kraj: Krško

PrispevekObjavljeno: Pet Jan 04, 2008 12:42 am    Naslov sporočila:   Odgovori s citatom

Važno, da dela. Jaz sicer ne vem kako gre v Delphiju. Mislim pa da je ta Sleep() kar v winapiju. Sem jaz tudi iskal to v Cju. Laughing

lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.55

PrispevekObjavljeno: Pet Jan 04, 2008 12:42 am    Naslov sporočila:   Odgovori s citatom

Silvo je napisal/a:
Ima Delphi poleg timerja še kako drugo možnost pavze? Recimo za primer, da želimo za določen čas zadržati izvajanje programa.


Zakaj bi pa to rabil ce ne programiras racunalniskih iger ? Ce zelis zadrzati izvajanje, potem je tvoj program zanic.

Ce moras pocakati na nekaj drugega (npr. na pritisk tipke), potem pac cakas na tisti dogodek, ne pa da CPU v prazno mleje cikle zakasnitvene zanke. OS poskrbi za to, da je videti kot zakasnitev, dokler se dogodek ne zgodi, ampak dejansko je pa CPU tisti cas prakticno prost za druge namene.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.67
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Jan 23, 2008 2:51 pm    Naslov sporočila:   Odgovori s citatom

Velikokrat je biolo govora o programiranju serijskega interfejsa, COM port po domače.

V tem članku je na Delphi primeru dobro razloženo, kaj je kje in čemu služi.
Programiranje preko windows API.



serial ports under windows - delphi.pdf
 Opis:

Download
 Ime datoteke:  serial ports under windows - delphi.pdf
 Velikost datoteke:  81.86 KB
 Downloadano:  62 krat


_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Tor Apr 29, 2008 10:07 pm    Naslov sporočila:   Odgovori s citatom

"Preoblačim" eno clipperjevo aplikacijo v grafično okolje. V rabi je ena večja baza (DBF) Iz te baze podatke prepisujem po željenem ključu v neko začasno bazo, ki je po strukturi enaka glavni. (Lahko bi sicer uporabil filter ter indekse ter uporabil glavno bazo, a ker moram uporabniku dobustiti, da iz te nove baze še kak izpis tudi izbriše sem se raje poslužil take metode.

V bazo se lahko prepisuje do nekaj 100 podatkov. Prepisovanje je dokaj hitro, moti pa me brisanje začasne baze. Samo brisanje zapisa po zapisu traje dlje kot prepisovanje zapisov.

Zapise brišem takole:

Koda:
while Table2.Eof=false do Table2.Delete;


Hotel sem poskusit rabo procedure EmptyTable a mi nekako ne uspe:

Tole je copy/paste iz helpa:
Koda:

with Table1 do

begin
  Active := False;
  DatabaseName := 'Delphi_Demos';
  TableName := 'CustInfo';
  TableType := ttParadox;
  EmptyTable;

end;


Teži mi, da je "Table is busy"

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Tor Apr 29, 2008 11:19 pm    Naslov sporočila:   Odgovori s citatom

Odgovor samemu sebi.

Gre za zalo čudnega delphijevega hrošča.
Če je baza v Objekt Inspektru vključena kot aktivna, ter poskusim brisati podatke s proceduro EmptyTable in če prav pred tem postavim Acitve na false (sem poskusil verifijacijo pred brisanjem - je na flase) brisanje ne uspe "Table is busy". Če pa v object inspektorju Active postavim na flase ter bazo vkljucim kot avtive recimo ob dogodku Form.OnCreate brisanje normalno deluje. Shocked
Še tole - brisanje je izredno hitro.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.01
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Sre Apr 30, 2008 10:15 am    Naslov sporočila:   Odgovori s citatom

No tole ni ravno bug.
Odpiranje baze v object inspektorju je koda, ki je sestavni del debugerja in ne tvojega programa. To se lepo vidi, če tako preveden program poženeš izven Delphi IDE, ker se pritoži, da baza še ni odprta.

Razlaga zakaj javi "Table is busy" je ob zgoraj napisanih dejstvih popolnoma odveč.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.67
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Apr 30, 2008 2:02 pm    Naslov sporočila:   Odgovori s citatom

Še en primer kode, kako nekaj na hitro narisati brez uporabe množice objektov.
Na primer tole:


Na formi kreiramo en sam objekt tipa TPaintBox - v razdelku System. V primeru ima ime platno.
Dodamo mu proceduro za funkcijo OnPaint. Se pravi - vsakič ko bodo windowsi zahtevali, da se vsebina ponovno nariše, bo poklicana ta procedura. Če hočemo "na silo" izrisati novo vsebino, v klicoči funkciji uporabimo ukaz
Koda:
platno.Invalidate; // podatki so osveženi -> izris


Funkcija OnPaint vsebuje samo risanje na Canvas objekta platno:
Koda:
procedure TMainForm.platnoPaint(Sender: TObject);
var
  X, Ypol : integer;
  Yf : single;

begin
  platno.Width := 215;
  Ypol := platno.Height DIV 2;
  Yf := platno.Height / ADC_range;  // Y faktor -> riše poln rang ADCja

  // horizontalne crte
  platno.Canvas.Pen.Color := clGray;
  platno.Canvas.Pen.Width := 1;
  platno.Canvas.MoveTo(0     , 0);
  platno.Canvas.LineTo(52*4+6, 0);
  platno.Canvas.MoveTo(0     , Ypol);
  platno.Canvas.LineTo(52*4+6, Ypol);
  platno.Canvas.MoveTo(0     , platno.Height-1);
  platno.Canvas.LineTo(52*4+6, platno.Height-1);

  // vertikalne crte
  platno.Canvas.Pen.Color := clWhite;
  platno.Canvas.Pen.Width := 1;
  platno.Canvas.MoveTo(0, 0);
  platno.Canvas.LineTo(0, platno.Height-1);
  platno.Canvas.MoveTo(52*4+6, 0);
  platno.Canvas.LineTo(52*4+6, platno.Height-1);

  // statusni kvadratek (lučka)
                              platno.Canvas.Brush.Color := clBlack;
  if PODATKI[53] = 100 then platno.Canvas.Brush.Color := clYellow;
  if PODATKI[53] = 101 then platno.Canvas.Brush.Color := clLime;
  if PODATKI[53] = 000 then platno.Canvas.Brush.Color := clRed;
  platno.Canvas.Rectangle(5,5,15,15);

  platno.Canvas.Pen.Color := clBlue;
  platno.Canvas.Pen.Width := 2;

  for X := 0 to 52 do
    begin
    if PODATKI[X]<0
      then  platno.Canvas.Pen.Color := clBlue
      else  platno.Canvas.Pen.Color := clRed;
   
    platno.Canvas.MoveTo(X*4+3, Ypol);
    platno.Canvas.LineTo(X*4+3, platno.Height - (round(PODATKI[X]*Yf)+ Ypol));
    end;
end;


Koordinatno izhodišče X, Y = 0,0 je v levem kotu zgoraj!

Kako ta koda deluje v realnosti se vidi na prvi sliki.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sre Sep 03, 2008 9:02 pm    Naslov sporočila:   Odgovori s citatom

Za nek izpis uporabljam QuickRep, ki mi popolnoma ustreza. Moti me edino previw. Kot prevzeta vrednost je "zoom to width". Bolj bi mi ustrezala "zoom to fit" Uporabljam Delphi 7 - helpa za QuickRep ni - očitno zato, ker je bila komponenta naknadno nameščena.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Nov 08, 2008 7:33 pm    Naslov sporočila:   Odgovori s citatom

O neki podobni zadevi smo nekoč že razpravljali.
Imam nekaj podatkov katere bi rad shranil ob zapiranju. Podatki v eni spremenjivki tipa array. (za vse skupaj bi sicer lahko uporabil podatkovno bazo, a to potegne za sabo nameščanje BDE) Druga varianta (katero bom vrjetno uporabil je ini datoteka)

Najenostavneje bi mi bilo spremenjivko shraniti v datoteko, ter jo ob odpiranju spet naložiti. (kar je znal že legendarni Clipper) Obstaja kaka funkcija, ki bi spremenjivko tipa array spravila v obliko za shranjevanje?

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.55

PrispevekObjavljeno: Sob Nov 08, 2008 7:49 pm    Naslov sporočila:   Odgovori s citatom

Blockwrite
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Sob Nov 08, 2008 7:57 pm    Naslov sporočila:   Odgovori s citatom

Sokrat hvala. Mislim, da bo ta pravo. Poročam, ko bom poskusil.
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.01
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Sob Nov 08, 2008 11:00 pm    Naslov sporočila:   Odgovori s citatom

Lahko tudi takole..
Koda:

type ar:array[1..50] of integer;
var f file of ar;
    data:ar;
.....
.....
....
system.assign(f,'ime.datoteke' );
system.rewrite(f);
write(f,data);
close(f);

...
...


Pisal na pamet. Verjetno je kaka sintaktična napaka.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.88
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pon Dec 08, 2008 7:44 pm    Naslov sporočila:  Desna poravnava - edit polje Odgovori s citatom

Kako zaboga poravnati vnos v edit polje desno? Sad Tudi to je že znal Clipper Confused

Rad bi prikazoval številke - izgled je lepši, če so poravnane desno. Sicer sem rešil programsko tako, da sem dodal spredaj določeno število presledkov glede na dolžino niza (zadnje tri vrstice v pripeti funkciji). Vseeno me zanima, če je poravnavo možno kako vključiti?

Koda:
Function Racunaj1(HBit,Lbit:char;faktor:integer):string;
  var rezultat,prazno:string;
  presledki:integer;
begin
  rezultat:=FloatToStr(((Ord(Lbit)+(Ord(Hbit)*256))/faktor));
    if pos(DecimalSeparator,rezultat)=0
    then rezultat:=rezultat+DecimalSeparator+'0';

  presledki:=5-length(rezultat);
  prazno:=StringOfChar(' ',presledki);
  result:=prazno+rezultat;
end;



poravnava.jpg
 Opis:
 Velikost datoteke:  41.97 KB
 Pogledana:  6 krat

poravnava.jpg



_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2104
Aktiv.: 8.87
Kraj: Ljubljana

PrispevekObjavljeno: Pon Dec 08, 2008 8:11 pm    Naslov sporočila:   Odgovori s citatom

Za Edit ne bi vedel.
V Borland Builderju lahko uporabiš RichEdit.
Desno poravnavo nastaviš z RichEdit-> Alignment=taRightJustify;

Če je text daljši, je potrebo uporabiti pisavo, ki ima konstantno širino znakov.



RichEdit.JPG
 Opis:
 Velikost datoteke:  8.26 KB
 Pogledana:  4890 krat

RichEdit.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jernej_L
Član
Član



Pridružen-a: Sob 23 Sep 2006 13:14
Prispevkov: 74
Aktiv.: 0.32
Kraj: Loka

PrispevekObjavljeno: Pon Dec 08, 2008 9:56 pm    Naslov sporočila:  Re: Desna poravnava - edit polje Odgovori s citatom

Silvo je napisal/a:
Kako zaboga poravnati vnos v edit polje desno? Sad Tudi to je že znal Clipper Confused


Z torry-a potegni Tedit z to opcijo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3, 4, 5  Naslednja
Stran 2 od 5

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 499 dni


Powered by phpBB © 2001, 2005 phpBB Group