Zapravo najbolje bi ih bilo staviti na decimal, jesam li u pravu Firday?
C# - Problemi i rješenja
- poruka: 2.151
- |
- čitano: 705.812
- |
- moderatori:
Lazarus Long, XXX-Man, vincimus
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Zapravo najbolje bi ih bilo staviti na decimal, jesam li u pravu Firday?
Double pokriva sve sta mi moze trebat koliko mi se cini...
Je friday u pravu si, mogu ja odabrat koji je tip varijabble kad definiran scalar property. Neznam kako mi je promaklo ali sredit cu to obvezno. Cijene ce bit double-ovi
Za cijene se u SQL-u koristi money (u EF-u se pretvara u decimal).
Pitanjce, radim ja radim... kad ono: ERROR??? (zapravo nije error nego exception pri pokretanju). Ugl kaze "unable to load DLL "kerne132"". Koristio sam djelove C-a (mislim [DllImport("kerne132")]). Malo surfajuci nadjem da je to dio starijih windowsa??? Ako je dali postoji neka novija verzija toga (da ucitam nesto drugo?). Ako posotji kakvo drugo jsenje...
Puno hvala i pusa...
EDIT: kaze da kada je racunalo zahvaceno nekim virusom (koji valjda obrise taj dll??), pa se onda druge (vec gotove) aplikacije koje ga koriste nece upaliti. (procito na nekom random site-u)
U tabeli cijene, polje cijena postavi na float, ne na int, nije cijena, nužno, cjelobrojan podatak.
Mi radimo isključivo sa decimal podacima - npr decimal(8,2) je dovoljno "široko" polje za cijene. Jedina mana toga je što eksport u excel ne radi dobro. Ako ćeš rezultate nekog selecta eksportati u excel moraš sve castati u float.
Zapravo najbolje bi ih bilo staviti na decimal, jesam li u pravu Firday?
Double pokriva sve sta mi moze trebat koliko mi se cini...
Realne tipove u bazi općenito treba izbjegavati i ne koristiti ih bez opravdanog razloga.
Brojčani podaci koji se unose su zadani u dekadskom brojevnom sustavu pa ih float tipovi (najčešće) moraju aproksimirati (npr. količina od 0,30 je pohranjena kao 0,299999999997) kn. Decimalni tipovi nemaju ovaj problem jer su uvijek točna reprezentacija unesene vrijednosti (količina od 0,30 je pohranjena točno kao 0,30).
sram me i sprd bilo... napiso sam kerne132 a trebo sam kernel32
sry na spamu
Malo, hipotetsko pitanje, dali mogu imati ovakvo nesto:
...
Form1()
{
...
...
void Nesto (double ElapsedTime)
{
...
}
}
Puno hvala!
Malo, hipotetsko pitanje, dali mogu imati ovakvo nesto:
...
Form1()
{
...
...
void Nesto (double ElapsedTime)
{
...
}
}
Puno hvala!
Pa možeš, zašto?
Malo, hipotetsko pitanje, dali mogu imati ovakvo nesto:
...
Form1()
{
...
...
void Nesto (double ElapsedTime)
{
...
}
}
Puno hvala!
Pa možeš, zašto?
ma skroz mi daje eror da fali } iznad void i da imam viska na kraju
Malo, hipotetsko pitanje, dali mogu imati ovakvo nesto:
...
Form1()
{
...
...
void Nesto (double ElapsedTime)
{
...
}
}
Puno hvala!
Pa možeš, zašto?
ma skroz mi daje eror da fali } iznad void i da imam viska na kraju
Pa jel ti to smješteno unutar neke klase?
namespace GameLoop
{
public partial class Game : Form
{
FastLoop _fastLoop;
public Game()
{
_fastLoop = new FastLoop(GameLoop);
InitializeComponent();
render.InitializeContexts();
void GameLoop (double elapsedTime)
{
}
}
}
znam da fali sad } na kraju, ali daje mi gresku da fali } iza render.initializeContexts();
(izbacio sam ostatak koda da bude jednostavnije ovdje)
U konstruktoru si napisao i još jednu metodu, metodu GameLoop izvadi iz konstruktora i napiši u klasi Game.
puno hvala svima, sve sam sredio
Napravio sam vlastiti print&preview (ispisujem tablicu, samo tekst bez slika) za data grid. Primjere koje sam pronašao na netu nisam koristio (nisu dovoljno 'lijepi'), te sam kreirao vlastiti preview. Na običnu formu sam dodao PrinDocument i PrintPreviewControl (imam još i PrintDialog, ali on mi ne stvara problema). Želim postići preview kao što je npr. u word-u ili excel-u, odnosno, da se u samom preview-u mogu mjenjati postavke (npr. margine, orjentacija papira, veličina papira) te da se one reflektiraju na samoj PrinPreviewControl-i.
Pretpostavljam (pretpostavka je majka svih zaj...ba) da bi u kodu nakon promjene orjentacije papira trebao resetirati samo kontrolu, ponovo pozvati PrintPage event, ali nisam uspio pronaći kako ovo napraviti.
Sve sam evente napravio preko vs dizajnera (nemam u kodu ovo: docPrint.PrintPage += new PrintPageEventHandler ......).
Sada kad kliknem na promjenu orjentacije papira, zbrka mi već postojeći preview, nemam više brojeve stranica (ovo sam pokušao preko InvalidatePreview, naravno, nije uspjelo).
Kako dalje?
Stavljam slikicu dijela prozora.
Ma naravno da radi, ubacio sam jedan int kojeg nisam prije InvalidatePreview vratio na nulu!!
U konstruktoru si napisao i još jednu metodu, metodu GameLoop izvadi iz konstruktora i napiši u klasi Game.
jesam ali je onda nece pokrenuti
evo izvadak iz tutoriala kojeg pratim
Hvala
Ako mozes izbjegni kombinaciju OpenGL + C#.
Ako ti C# sluzi samo zbog preview kontrole na formi probaj isto napravit u C++ i Win Formsima.
radim jedan programčić u c#. imam recimo button i richtextbox. klikom na button se izvršava nekoliko funkcija od kojih jedna kad nesto obavi ispise određeni tekst u rtbox. problem je sto to izvrsavanje moze trajati i do 2, 3 sekunde pa mi se cijela forma zamrzne, ako kliknem bilo gdje na nju gore se doda (Not responding). kako mogu rijesiti to da se ne zablokira? mislio sam napraviti da se to obavlja u novoj dretvi, ali jel postoji jos koji nacin?
radim jedan programčić u c#. imam recimo button i richtextbox. klikom na button se izvršava nekoliko funkcija od kojih jedna kad nesto obavi ispise određeni tekst u rtbox. problem je sto to izvrsavanje moze trajati i do 2, 3 sekunde pa mi se cijela forma zamrzne, ako kliknem bilo gdje na nju gore se doda (Not responding). kako mogu rijesiti to da se ne zablokira? mislio sam napraviti da se to obavlja u novoj dretvi, ali jel postoji jos koji nacin?
mislim da nikako osim tako.
Upotrijebi backgroundworker.
Ne, napravi odvojenu dretvu koja ce to raditi ako zelis da ti forma i dalje bude responzivna, jer sama aplikacija ceka da se te tvoje metode izvrse kako bi nastavila sa radom.
Napravi sa Task-om (u buttonclick metodi):
var t0 = Task.Factory.StartNew(() =>
{
nekaDugotrajnaMetoda();
};
A sama metoda (ako trebaš nešto ispisati u richtexteditu iz drugog threada)
void NekaDugotrajnaMetoda()
{
//obavi nekakav posao
MethodInvoker mi = delegate
{
richtextedit1.text=nekakvavrijednost;
};
this.BeginInvoke(mi);
}
konkretno ja sam to ovako riješio. jel to dobro?
private void button5_Click(object sender, EventArgs e)
{
string descr = "...
ProcessStartInfo procInfo = new ProcessStartInfo(....
Thread thread = new Thread(()=>doWork(descr, procInfo, true, false));
thread.Start();
}
public void doWork(string description, ProcessStartInfo procInfo, bool windows, bool printDetails)
{
...
if (richTextBox1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
richTextBox1.Text += "neki tekst...";
}));
}
else
{
richTextBox1.Text += "neki tekst...";
}
...
}
konkretno ja sam to ovako riješio. jel to dobro?
private void button5_Click(object sender, EventArgs e)
{
string descr = "...
ProcessStartInfo procInfo = new ProcessStartInfo(....
Thread thread = new Thread(()=>doWork(descr, procInfo, true, false));
thread.Start();
}
public void doWork(string description, ProcessStartInfo procInfo, bool windows, bool printDetails)
{
...
if (richTextBox1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
richTextBox1.Text += "neki tekst...";
}));
}
else
{
richTextBox1.Text += "neki tekst...";
}
...
}
Ako radi - radi
3 osobe tri odgovora :) Kako rece kolega iznad ako radi... :D
hmm, s onim kodom sam zapravo omogucio novom threadu da pristupi richtextboxu koji je kreiran u main threadu. ali koliko vidim to ne rjesava moj problem, forma se i dalje zablokira, ne znam zasto :/
Hmmm a da pokusas sa BackgroundWorkerom?
hmm, s onim kodom sam zapravo omogucio novom threadu da pristupi richtextboxu koji je kreiran u main threadu. ali koliko vidim to ne rjesava moj problem, forma se i dalje zablokira, ne znam zasto :/
Ma nemoguće, startanje taska ti neće zablokirati formu. Nešto je drugo još posrijedi. Daj malo koda pa da nađemo krivca!
Ovako iz prve bih rekao da je problem u ovom dijelu:
this.Invoke(new MethodInvoker(delegate
{
richTextBox1.Text += "neki tekst...";
}));
iskoristi this.BeginInvoke() jer se izvršava asinkrono na drugom threadu a običan invok se izvršava na main threadu i onda bi moglo blokirati.
Ako ni to ne riješi onda treba vidjeti kod da bi pronašli problem.
neće ni sa begininvoke
možda je problem što moram pristupit varijablama koje su deklarirane u main threadu. imam naprimjer neki integer ili bilo sta drugo u main threadu, i kako ga iz nekog drugog threada postaviti na neku vrijednost?
edit: evo dio koda koji je bitan, mislim da ono podcrtano stvara problem
dok doWork dođe do izvršavanja, ta dva stringa vec poprime određene vrijednosti, ne budu null
public partial class Form1 : Form
{
...
string office14Dir = null;
string office15Dir = null;
public void doWork(string description, ProcessStartInfo procInfo, bool windows, bool printDetails)
{
if (richTextBox1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate()
{
richTextBox1.Text += ...
}));
}
else
{
richTextBox1.Text += ...
}
ProcessStartInfo cmdInfo1 = procInfo;
if (windows)
{
cmdInfo1.WorkingDirectory = ...
}
else //if (office)
{
if (tabControl1.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate()
{
if (tabControl1.SelectedIndex == 2)
{
cmdInfo1.WorkingDirectory = office14Dir;
}
else if (tabControl1.SelectedIndex == 3)
{
cmdInfo1.WorkingDirectory = office15Dir;
}
}));
}
else
{
...
}
}
...
}
}