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 

Prvi koraki v Delphiju
Pojdi na stran 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
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Sob Sep 22, 2007 11:30 pm    Naslov sporočila:   Odgovori s citatom

Knjiga je že nekaj časa doma. Naloženo imam verzijo 6. Popoldne je bilo nekaj časa v službi. "Predelal" sem 100 strani teorije. Sedaj sem se lotil prakse. Glede na to, da imam kar dosti izkušenj s programiranjem v Clipperju pa tudi Pascal mi ni tuj, mi osnovno razumevanje (procedure, funkcije, konstante spremenjivke...) ne dela kakih težav.

Nametal sem nekaj vnosnih polj ter gumbov na form (za nekaj podobnega v DOS okolju bi v Cliperju potreboval vsaj pol ure Sad ) Napisal sem kratko lastno proceduro ter funkcijo.
Imam nekaj vprašanj poznavalcem:
Prevzeta vsebina vnosega polja je tipa string (niz). Ugotovil sem, kje lahko nastavim dolžino. Kako vnosno polje definiram kot real recimo z 2 decimalkama. Kako omejim vnos le na numerične vrednosti? Recimo pri moji testni proceduri sem string pretvoril z vgrajeno funkcijo strtoint() v integer jo matematično obdelal ter vrnil v drugo polje kjer se prikazuje rezultat preko funkcije inttostr() oziroma flottostr() V tem primeru program "crkne" če vnesem karakter.
Zakaj mi lastna funkcija ne dela, če ni napisana pred odzivno proceduro, ki jo kliče?
Toliko za začetek.
Hvala za odgovore.

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



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.30

PrispevekObjavljeno: Ned Sep 23, 2007 10:03 am    Naslov sporočila:   Odgovori s citatom

Za vnos podatkov, ki naj bi bili dolocenega tipa obstaja objekt TMaskEdit. Ta bo kar koristen.

Glede pretvarjanja podatkov. V primeru napacno vnesenega podatka pomaga, ce uporabljas funkcije, ki vrnejo napako (in jih seveda preverjas) ali pa uporabljajo default vrednosti, ce do napake pride.

Recimo StrToInt vrze exception (katerega moras ujeti), StrToIntDef pa vrne default vrednost (recimo NaN).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Ned Sep 23, 2007 12:13 pm    Naslov sporočila:   Odgovori s citatom

Glitch je napisal/a:
Za vnos podatkov, ki naj bi bili dolocenega tipa obstaja objekt TMaskEdit. Ta bo kar koristen.

Glede pretvarjanja podatkov. V primeru napacno vnesenega podatka pomaga, ce uporabljas funkcije, ki vrnejo napako (in jih seveda preverjas) ali pa uporabljajo default vrednosti, ce do napake pride.

Recimo StrToInt vrze exception (katerega moras ujeti), StrToIntDef pa vrne default vrednost (recimo NaN).


Super, dela hvala.

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



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.43
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pon Sep 24, 2007 8:14 am    Naslov sporočila:   Odgovori s citatom

Za dodatne komponente, o katerih sem ti govoril in ki jih boš občasno potreboval (recimo 7 segmentni displayi, itd...) se pa nahajajo na http://www.torry.net/pages.php?id=20


Če te pa kaj zanima, pa telefon imaš Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.65
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Pon Sep 24, 2007 10:51 am    Naslov sporočila:   Odgovori s citatom

SIlvo: Če je procedura uporabljena prej, kot je napisana, je program ne pozna, zato jo jo deklariraš: forward procedure blabla;
proceduro pa dejansko napišeš kasneje

Jur
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: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Pon Sep 24, 2007 11:29 am    Naslov sporočila:   Odgovori s citatom

Še vprašanje, preden sploh pridem do tja Wink (Pa, da ne premečem cele pomoči)
Ima Delphi kako enostavno možnost shranjevanja spremenjivk? (recimo pri Clipperju sem lahko vse shranil v *.mem datoteko.) Recimo, ko program zaprem, bi rad shranil trenutne vrednosti vnešene v obrazcu. Pri ponovnem zagonu bi jih rad spet naložil.

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



Pridružen-a: Pet 07 Apr 2006 11:40
Prispevkov: 1477
Aktiv.: 6.30

PrispevekObjavljeno: Pon Sep 24, 2007 12:02 pm    Naslov sporočila:   Odgovori s citatom

Poglej si objekt TIniFile, ki omogoča shranjevanje v ini datoteke. Obstaja tudi varianta za shranjevanje v registry (ampak ta je ze tako in tako poln raznoraznih smeti).
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mucek4
Član
Član



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.43
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Pon Sep 24, 2007 12:37 pm    Naslov sporočila:   Odgovori s citatom

Ročno. Avtomatsko ne. Vsako stvar posebej shraniš v TForm.onClose(); Ini je lepa zadevšna, pa tudi ni težko osvojit. Edino, če podaš samo ime datoteke ("mojprogram.ini") jo automatsko shrani v "windows" imenik in ne v tekočega.
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: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Pon Sep 24, 2007 11:58 pm    Naslov sporočila:   Odgovori s citatom

Še nakaj vprašanj za poznavalce Delphija.
TMaskEdit mi dela nekaj težav. Recimo imam masko '999', ki dovoljuje vnos treh številk. Vrednost pretvorim v integer s funkcijo StrToIntDef, še prej pa porežem presldedke s funkcijo Trim, če slučajno vnesem le eno ali dvomestno vrednost. (sicer bi za vnos 1 moral vpisat 001 Sad )
Ok, to nekako gre moti me pa da se v maski v primeru, da je vnešeno manše število kot je dolžina polja ne poravna desno. A gre to izvesti drugače? Je potrtebno masko kako drugače sestavit. A polje vedno vrača string? Hudiča, že z 20 let starim Clipperjem je to šlo lažje - s polja je "priletelo" direkt realno število, če je bila predhodno spremenjivka določena kot numerična. Ne vrjamem, da v Delphiju ne bi šlo, a jaz očitno ne znam. Sad .
Še eno vprašanje:
A mogoče obstaja že narejena funkcija IF (da ne pišem svoje) pa se morda drugače imenuje?
V Clipperju je izgledala nekako takole:
nX=IF(nA=nB,nResA,nResB)

Povedano po domače:Če je vrednost nA, enaka nB potem vrne nResA sicer nResB.

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



Pridružen-a: Sob 18 Jun 2005 20:52
Prispevkov: 2952
Aktiv.: 12.43
Kraj: Tržič - Mesto med gorami

PrispevekObjavljeno: Tor Sep 25, 2007 7:19 am    Naslov sporočila:   Odgovori s citatom

Silvo. Žal. Web aplikacije so še slabše. Nimaš drugega kot string.
Kot sem ti že rekel. Tukaj je en primer TFloatEdit-a iz torry-ja. FreeWare with Source.

In druga stvar. Ne. Žal. Ne.
Tisti je pogojni operator (vsaj c, java) in se ga uporablja
X = (a==b)?vA_vB;

za delphi je pa spisana knjižnica tukaj
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.51

PrispevekObjavljeno: Tor Sep 25, 2007 7:34 am    Naslov sporočila:   Odgovori s citatom

Kaj je pa narobe z

Koda:

if (nA = nB) then
   nX := nResA
else
   nX := nResB;


? Napises lahko tudi v eni sami vrstici (razbito je samo zaradi preglednosti).

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



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

PrispevekObjavljeno: Tor Sep 25, 2007 7:52 am    Naslov sporočila:   Odgovori s citatom

Ha ha.. Silvo, če hočeš pisati v delphi-ju, moraš začeti razmišljat paskalsko. Pozabi na cliper.
_________________
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
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.65
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Tor Sep 25, 2007 8:53 am    Naslov sporočila:   Odgovori s citatom

Najkrajša koda za prej omenjeni if stavek je: if nA=nB then nX:=nResA else nX:=nResB;

Maskedit: mask edit ne poravnava številk na desno, preprosto zato, ker ne ve koliko cifer boš vnesel. Če bi hotel poravnavanje, bi moral uporabiti navaden Edit. Za event OnChange (ko nekaj spremeniš) pa bi moral preveriti pravilnost vnosa (ali je to črka ali cifra) in potem poravnati string.

Delphi je uporabna stvar, vendar nima na razpolago čisto vseh možnosti, ki bi jih človek želel. Zato pa ponuja možnost, da si željo sprogramiraš.

Jur
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.61
Kraj: Kranj - struževo

PrispevekObjavljeno: Tor Sep 25, 2007 9:31 am    Naslov sporočila:   Odgovori s citatom

Silvo je napisal/a:
Ima Delphi kako enostavno možnost shranjevanja spremenjivk?


Primer odpiranja INI fajla. INI se nahaja v istem direktoriju kot EXE.
Če INI fajl ne obstaja ali pa manjka kakšen parameter, kreira novega in zapre aplikacijo.

Ob zapiranju aplikacije (za shranjevanje spremenljivk) rabiš samo Create, Write, Free funkcije.

Koda:

var
  Ini: TIniFile;

begin
  // odpri INI fajl

    Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'termometer.ini');
  if NOT INI.SectionExists ('Senzorji') then // INI ne obstaja ali nima te sekcije
     begin
     ShowMessage ('Napaka v INI fajlu - kreiram nov default INI fajl.');
     INI.WriteString('Komunikacija', 'TCPIP Port','2500');
     INI.WriteInteger('Komunikacija', 'COM port', 1);
     INI.WriteInteger('Senzorji', 'stevilo', 1);
     INI.WriteInteger('Senzorji', 'interval', 60);
     INI.Free;
     Application.Terminate;
     exit;
     end;

  FPortStr := INI.ReadString('Komunikacija', 'TCPIP Port','');
  if FPortStr = '' then
     begin
     Info ('Napaka v INI fajlu - TCP/IP port.', sError);
     ShowMessage ('Napaka v INI fajlu - TCP/IP port. Popravi!');
     INI.WriteString('Komunikacija', 'TCPIP Port','2500');
     INI.Free;
     Application.Terminate;
     end;

  COMport := INI.ReadInteger('Komunikacija', 'COM port', 0);
  if NOT (COMport in [1..4]) then
     begin
     Info ('Napaka v INI fajlu - COM port.', sError);
     ShowMessage ('Napaka v INI fajlu - COM port. Popravi!');
     INI.WriteInteger('Komunikacija', 'COM port', 1);
     INI.Free;
     Application.Terminate;
     end;

  stevilo_senzorjev := INI.ReadInteger('Senzorji', 'stevilo', 0);
  if stevilo_senzorjev = 0 then
     begin
     Info ('Napaka v INI fajlu - število senzorjev.', sError);
     ShowMessage ('Napaka v INI fajlu - število senzorjev. Popravi!');
     INI.WriteInteger('Senzorji', 'stevilo', 1);
     INI.Free;
     Application.Terminate;
     end;

  interval_merjenja := INI.ReadInteger('Senzorji', 'interval', 0);
  if interval_merjenja = 0 then
     begin
     Info ('Napaka v INI fajlu - interval merjenja.', sError);
     ShowMessage ('Napaka v INI fajlu - interval merjenja. Popravi!');
     INI.WriteInteger('Senzorji', 'interval', 60);
     INI.Free;
     Application.Terminate;
     end;

  INI.Free;  // zapre INI fajl

_________________
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: 14677
Aktiv.: 61.80

PrispevekObjavljeno: Tor Sep 25, 2007 10:25 am    Naslov sporočila:   Odgovori s citatom

Sokrat je napisal/a:
Kaj je pa narobe z

Koda:

if (nA = nB) then
   nX := nResA
else
   nX := nResB;


? Napises lahko tudi v eni sami vrstici (razbito je samo zaradi preglednosti).


Nič ni narobe, razmišljam pač po clipperaško - spraševal sem, če slučajno obstaja kaka že vgrajena funkcija, sicer tole ni problem vreči v lastno.


VolkD je napisal/a:
Ha ha.. Silvo, če hočeš pisati v delphi-ju, moraš začeti razmišljat paskalsko. Pozabi na cliper.

Darko presenetlivo veliko sta si podobna, če prav sta zgrajena na drugačni osnovi in je prvi star že dvajset let.

jur je napisal/a:
Najkrajša koda za prej omenjeni if stavek je: if nA=nB then nX:=nResA else nX:=nResB;

Maskedit: mask edit ne poravnava številk na desno, preprosto zato, ker ne ve koliko cifer boš vnesel. Če bi hotel poravnavanje, bi moral uporabiti navaden Edit. Za event OnChange (ko nekaj spremeniš) pa bi moral preveriti pravilnost vnosa (ali je to črka ali cifra) in potem poravnati string.

Delphi je uporabna stvar, vendar nima na razpolago čisto vseh možnosti, ki bi jih človek želel. Zato pa ponuja možnost, da si željo sprogramiraš.

Jur


Jur ter Aly hvala za razlago. Moram reči, da me je Delphi kot začetnika pozitivno presenetil.

_________________
lp
Silvo
Nazaj na vrh
Prisoten Poglej uporabnikov profil Pošlji zasebno sporočilo
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 1, 2, 3, 4, 5  Naslednja
Stran 1 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: 7 dni


Powered by phpBB © 2001, 2005 phpBB Group