 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
piflar Član

Pridružen-a: Čet 06 Dec 2007 17:56 Prispevkov: 246 Aktiv.: 1.15 Kraj: Krško
|
Objavljeno: Pet Jan 04, 2008 12:42 am Naslov sporočila: |
|
|
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.
lp
|
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.55
|
Objavljeno: Pet Jan 04, 2008 12:42 am Naslov sporočila: |
|
|
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 |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.67 Kraj: Kranj - struževo
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Apr 29, 2008 10:07 pm Naslov sporočila: |
|
|
"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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Apr 29, 2008 11:19 pm Naslov sporočila: |
|
|
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.
Še tole - brisanje je izredno hitro.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.01 Kraj: Divača (Kačiče)
|
Objavljeno: Sre Apr 30, 2008 10:15 am Naslov sporočila: |
|
|
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 |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.67 Kraj: Kranj - struževo
|
Objavljeno: Sre Apr 30, 2008 2:02 pm Naslov sporočila: |
|
|
Š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  |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Sep 03, 2008 9:02 pm Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Nov 08, 2008 7:33 pm Naslov sporočila: |
|
|
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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.55
|
Objavljeno: Sob Nov 08, 2008 7:49 pm Naslov sporočila: |
|
|
Blockwrite
_________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sob Nov 08, 2008 7:57 pm Naslov sporočila: |
|
|
Sokrat hvala. Mislim, da bo ta pravo. Poročam, ko bom poskusil.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.01 Kraj: Divača (Kačiče)
|
Objavljeno: Sob Nov 08, 2008 11:00 pm Naslov sporočila: |
|
|
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 |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.88 Kraj: Koroška-okolica Dravograda
|
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2104 Aktiv.: 8.87 Kraj: Ljubljana
|
Objavljeno: Pon Dec 08, 2008 8:11 pm Naslov sporočila: |
|
|
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.
Opis: |
|
Velikost datoteke: |
8.26 KB |
Pogledana: |
4890 krat |

|
|
|
Nazaj na vrh |
|
 |
Jernej_L Član


Pridružen-a: Sob 23 Sep 2006 13:14 Prispevkov: 74 Aktiv.: 0.32 Kraj: Loka
|
Objavljeno: Pon Dec 08, 2008 9:56 pm Naslov sporočila: Re: Desna poravnava - edit polje |
|
|
Silvo je napisal/a: |
Kako zaboga poravnati vnos v edit polje desno? Tudi to je že znal Clipper |
Z torry-a potegni Tedit z to opcijo.
|
|
Nazaj na vrh |
|
 |
|
|
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
|