Hirdetés
Új hozzászólás Aktív témák
-
lao ce
aktív tag
gondolom a file bent van a helyen valamilyen objektumban, akkor van valamifele stream amit olvasol (mar lassan ket eve nem delphiztem egy karaktert sem, szoval nem tudom miert kezdtem neki itt okoskodni), aztan kikerestem neked egy ilyet:
function IntToBin ( value: LongInt; digits: integer ): string;
begin
result := StringOfChar ( '0', digits ) ;
while value > 0 do begin
if ( value and 1 ) = 1 then
result [ digits ] := '1';
dec ( digits ) ;
value := value shr 1;
end;
end;
meg egy ilyet:
function HexToInt(HexNum: string): LongInt;
begin
Result:=StrToInt('$' + HexNum) ;
end;nicht kompot
-
lao ce
aktív tag
-
lao ce
aktív tag
-
lao ce
aktív tag
válasz Drótszamár #853 üzenetére
ki lehet 'hamozni'? a vegen meg elriasztod a lelkeseket
ExtractFileDrive (filaneme)
vagy ha tobb minden kell, akkor:
ProcessPath(selectedFile, drive, path, fileName)nicht kompot
-
lao ce
aktív tag
kedves szalma
szerintem egy haromszog miatt azzal nem kell megkuzdeni, csodalkoznek ha latni lehetne kulonbseget. inkabb ugy irom: elegge biztos vagyok benne hogy az adott feladatban a double buffering megoldja a problemat, mig az erase nem jatszik szerepet. de tevedhetek.
amugy a kuzdelem kb ennyi lenne ha jol sejtem:
private
procedure Kuzdes (var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
...
procedure TForm1.Kuzdes (var Msg: TWMEraseBkgnd);
begin
Msg.Result := 1;
end;
amit azert nem neveznek kuzdelemnek.nicht kompot
-
lao ce
aktív tag
en azt hiszem ezt ugy szoktak megoldani, hogy eloszor megrajzoljak a memoriaban amire szukseg van es aztan egy lepesben kirakjak a lathato teruletre.
szoval en ugy csinalnam hogy lenne egy image ami a haromszogemet tartja:
var
...triangle: tbitmap;
aztan ezt elokeszitenem a form create-ben:
...triangle := TBitmap.Create;
...triangle.PixelFormat := pf32bit;
...triangle.Width := Form1.Width;
...triangle.Height := Form1.Height;
es persze fel is szabaditanam a destroy-ban vagy close-ban:
triangle.Free;
a mousemove-ban meg eloszor visszaallitanam a 'szurket' a triangle image-ben(azaz torles)
...triangle.Canvas.Brush.Color := clSilver;
...triangle.Canvas.Rectangle (0,0, Form1.Width, Form1.Height);
aztan megrajzolnam a haromszoget a mar 'ures' kepben:
...triangle.Canvas.Brush.Color := clWhite;
...triangle.Canvas.Polygon([
......point(100, 500),
......point(300, 500),
......point(X, Y)
...]);
(az utolso sor X es Y koordinataja az egerpozicio, ami a mousemove procedure parametere)
vegul ugyanitt a mousemove-ban, a triangle nevezetu image tartalmat kikopiznam a form canvasara ezzel a konnyeden ertheto, minden igazi programozoba dns szinten oroklott utasitassal:
...BitBlt(
......Form1.Canvas.Handle,
......0, 0,
......Form1.Width, Form1.Height,
......triangle.Canvas.Handle,
......0, 0,
......srccopy
...);
jo szorakozast.
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
engem kifejezetten bosszant ha a debuggert kell hasznalnom, nalam az mar a harmadik lepes, a 'mi a tokom van mar ezzel, debuggolni kell' kategoria.
elotte van a 'haladok tovabb es kozben kigondolom mi a baj' es az 'odalapozok a kodhoz es bambulom egy darabig'.
a debug utan mar csak az 'akkor csinaljuk maskent', a 'keresgelek az interneten' es vegul a 'megkerdezem az interneten' kategoriak vannak.
ami erdekes, hogy attol fuggoen hogy melyik lepesben oldodik meg a baj, visszafele is lepdelek. tehat ha valaki segit az interneten, akkor utana meg keresgelek egy darabig hogy miert is nem talaltam meg eredetileg valamint mas megoldasok utan. aztan beepitem es remenykedek hogy megy, debuggal megnezem hogy mi tortenik a kapott kodreszletben. aztan bambulok a sorokra hogy megertsem, vegul haladok tovabb es gondolkodok rajta hogy hogy a tokombe nem lehetett erre rajonni magamtol is.
van akinel 'nem megy ezert zaklatok emailen idegeneket' kategoria az elso es egyetlen.
ps: aramvonalas rutinoknicht kompot
-
lao ce
aktív tag
ha van egy geped mas oprendszerrel (akar kolcson) es a network megy kozottuk,
akkor vegig tudlak vezetni hogy mit kell csinalni hogy lassa az uj gep az oracle-t. eleg necces, de nehany-tizszer eletemben mar sikerult.
biztos ilyet kerdeznek hogy miert eppen az oracle-t valasztotta? jobb ha kitalalsz valamit, az 'azt tudtam megszerezni' valasz hataresetnicht kompot
-
lao ce
aktív tag
hat nem tudom hogy pontosan nekem mit tanitottak, de eleg hangsulyos a dolog. nem ertem hogyan lehet hogy errol nem beszeltek?
otleteim vannak:
-a program terveben nem art hogyha van valamifele utalas a hibakezelesre
-a funkciok specifikaciojanak meglete is a resze a tesztelesnek
-elvileg le kellene talan tesztelni minden procedurat es funkciot helyes es helytelen bemeneti ertekekkel.
-vegig kellene talan csinalni egy 'joindulatu' es egy 'rosszindulatu' tesztet a felhasznaloi feluleten. joindulatu a mikor szuletett kerdesre az 1922-01-22 a rosszindulatu a 12-333-2. utcanevre mondjuk a petofi utca a joindulatu es haromszaz egyes karakter vagy a ' '' !@#$%^&*43 a rosszindulatu.
-keyboard kombinaciok, szabalytalan kilepes. alt+f4, ctrl+alt+del okoz problemat? ctrl+escape,felnyil,enter,enter?
-ha a programot valahol hasznalnak akkor kulso tesztelesre lehet vinni par napra, es akkor lehet mondani hogy ez meg az a funkcio az o keresukre kerult bele. ez a 'hasznalhatosagi teszt'. de ez lehet egy 'kollega' is ha nem lesz hasznalva a program.
-video teszteles kulonbozo felbontasban, szinmelysegben, temakkal, nagy karakterekkel(!)
-platform teszt... mas gepen es vindoz verzioban. xp sp2 kompatibilis?
-tovabbi dolgok, hogy okoz-e gondot: windows terheles alatt van a futas alatt, tobb peldanyban fut, halozati kimaradas.
-lehetne csinalni egy stress tesztet. megitelni hogy egy-ket-ot ev mulva mekkora lesz a rendszer. aztan insertalni tizezer tanart fejenkent tizezer oraval, es megnezni, hogy melyik resz lett iszonyu lassu.
de senki nem tudja hogy mit kellett volna tanulni es tanitani neked ott... szoval ezek csak otletek.nicht kompot
-
lao ce
aktív tag
''...miért nem csináltál egy saját céget, vagy mentél el egy céghez dolgozni''
miert ne tettem volna ezeket a dolgokat? ezeket csinaltam.
''Gondolom az iskoláid elvégzése után nem kis tapasztalatod lehetett''
ugy erted nagy gyakorlatom lett volna? nem, semmi nem volt hiszen addig iskolaba jartam. igaz, egyetem alatt mar egy... nem, ket munkahelyem is volt, dolgoztam. az elso munkahelyemen seged-al-al-al-al programozo voltam es szaladtam ha nem ment valakinek valami a konzolon. tudod... olyan zold szinu kijelzo mint a regi scifikben, bar azt hiszem volt mar egy-ket szines monitor is a csokosok asztalan.
''Vagy csak egyszeruen csináltál volna egy hasznos kis progit, vagy tobbet és eladod''
nem tudtam en hasznos kis progit csinalni. az kulcsfontossagu hogy ki kell talalni egy jo otletet amihez elobb a piacot meg kell ismertni. abban az idoben meg nem volt internet. ezen kivul tars vagy tarsak nelkul nem megy. es tarsat talalni a legnehezebb. kerdezd alan-t
addig is amig suliba jarsz, a programozas mellett tanulj angolul. ha szereted a nyelveket akkor nemetul is. a matekra is hasalj ra, mert jo gondolkodasmodot ad es meg az is lehet hogy kelleni fog.nicht kompot
-
lao ce
aktív tag
ja, hat egy jopar evig sikerelmenyt ad. marmint a programozas.
nicht kompot
-
lao ce
aktív tag
velkam on da bord.
Alan... figyu mar, tusi azt hiszi hogy azert mert nem eszik es csak kolat iszik egesz nap majd mi itt hasraesunk. bevallottan meg a wc-re is kiszaladgal, hat hol tart a vilag komolyan... november ota ccc... melyik ev? tusi, legkozelebb rendelj pizzat, azt siman be tudjak csusztatni a csukott ajto alatt, tudsz kozben fejleszteninicht kompot
-
lao ce
aktív tag
ok.
1) allj a reportformra. nyomjal alt+f12 -ot. a report formod atvalt text-re.
2) ctrl+f, ird be a keresobe hogy txtnev.
3) keresd meg hol van. a sor ilyen lesz object txtnev: Tvalami (talan TText).
4) scrolloz felfele amig nem talalod meg hogy melyik masik objektumon belul talalhato a txtnev objektum. azaz, az elso olyan object.... sor lesz ami balrabb van rendezve a txtnev-nel
object form : Tform
...tulajdonsagok, objektumok sok soron keresztul...
...object valami : Tvalami <- ezt keressuk
......tulajdonsagok, objektumok sok soron keresztul......
......object txtnev : TValami
5) jegyezd meg a szulo nevet, ezt kell hasznalni.
6) alt+f12 (valts vissza)nicht kompot
-
lao ce
aktív tag
es a text nem jo? gondolom van olyan hogy Name az a neve a Text meg a szoveg ami benne van. nem ertem mit nem ertesz. vagy nem ertem en mit nem ertek.
szerk: basszus nevezd mar at azt a komponenst txtTanarNeve-re jo? kerlek. Name propertybe irdd be hogy txtTanarNeve. hat meg ilyet. irgum-burgum mar.
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
RvProject2.Text5:=Query18...
hat, ezt nem is fogja. nem tudom milyen tipusu mezo a statikus. Label lenne (mint quickreportban)? mert akkor van captionje (ezert irtam en is hogy caption az elobb). esetleg valami rave report altal keszitett sajat text tipus? nincs olyan hogy Text5.text, Text5.value, Text5.caption vagy esetleg Text5.azanyjat?
eloszor probald hogy Text5.Valami := 'alma';
ha az almaval megy akkor Query blabla is menni fog.nicht kompot
-
lao ce
aktív tag
otlet:
hat, ha a nev parameterkent jon (azaz ismert), akkor esetleg vedd ki az adatbazis fieldet teljesen, es ugy ahogy az 'orabeosztasa' szoveget kiirod, tegyel statikus textet, DE, azzal a kulonbseggel hogy a riport formjanak oncreate eventjeben egyszeruen tedd egyenlove egy valtozoval ami a tanar nevet tartalmazza. csak lehet olyat hogy TanarStatTextField.caption := NevString; nem? ez ugyan nem javitana ki a hibat, de megoldana a problemat.nicht kompot
-
-
lao ce
aktív tag
felig vicces volt. hat, van mondjuk 4 allapotod (nem tudom mennyi) megrajzolva kepben. felteszel egy image komponenst a formra, beleteszed az elso kepet, es elnevezed az imagedet btnSajatGomb-nak mondjuk. aztan a kepeket cserelgeted mikor a mosue fele megy vagy megnyomjak vagy valami.
erdemes persze altalanos eljarasokat kesziteni amik nem csak erre az egy gombra mukodnek (hatha tobb gombod is van vagy lesz)
erdemes megfontolni hogy imagelist-et is hasznalj az image-ek melle, abban tobb kepet el lehet tarolni, ami nem rossz dolog.nicht kompot
-
lao ce
aktív tag
ha minden fazisat megrajzoltad egy gombnak es negyszog alaku csak azt hitted viccbol kerdezem, akkor tedd ra egy image-re, es nevezd ki, hogy marpedig ez matol kezdve gomb. az onclick, mousemove stb eventeket lehet hasznalni izles szerint, hogy valtogasd a gomb kepet ahogy az egeret huzzak felette ill hogy megird a lenyomas esemeny programjat.
ha haromszog alaku akkor maskent kell csinalni. azt javaslom hasznalj negyszog alaku gombot, mert legalabbis szerintem nem egyszeru rendesen megirni egy tetszoleges alaku gomb kezeleset. persze nem is lehetetlen, de nem biztos hogy megeri vacakolni vele. esetleg keress egy ilyen komponenst a weben es hasznald azt.nicht kompot
-
lao ce
aktív tag
tolem mindig valami bonyolultat olvasol.
- canvas-t nem tudom magyarul, de vaszon (festo) ha leforditod szo szerint.
- a nyolc az pixelben van. amolyan magic number, izles szerint.
- ez a kod iszonyu, ezert nehez erteni kicsit.
a TextWidth amire mi utazunk, es ez egy canvashoz kapcsolodik, tok mindegy hogy melyiket hasznaljuk. tobb canvas is van eppen hasznalatban, a stringgridnek es a formnak biztosan ott csucsulnek a canvasai.
ha csak ugy siman benyogi az ember hogy canvast ide vazze, akkor a form canvasat erti a delphi. de, ha with...do is van, akko' eloszor megprobalja, hogy ami a with-be van irva annak van-e canvasa ha igen akkor azt hasznalja. aki irta ezt a programreszletet nyilvanvaloan nem volt tisztaban ezzel.
namarmost.
Canvas.Font := Font
ez a sor hulyeseg. vedd ki a fenebe. megprobaltam leirni hogy miert hulyeseg, de inkabb 'gondolkozz rajta', mert 15 sor volt a magyarazat es en magam sem ertettem a vegen amit irtam...
tudod mit? atirtam neked, mert igy legalabb ertheto mi tortenik, ne mar 6 soron muljon.
// vegigmegy ket ciklussal a cellakon oszloponkent, kiolvassa a cella
// szovegenek szelesseget (TextWidth), eltarolja a legnagyobb erteket
// vegul beallitja az oszlopot a legnagyobb szelessegre
for j := 0 to StringGrid1.ColCount -1 do begin
...maxSzeles := 0;
...for i := 0 to StringGrid1.RowCount -1 do begin
......aktSzeles := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[j, i]) + 8;
......if aktSzeles > MaxSzeles then maxSzeles := aktSzeles;
...end;
...if maxSzeles > 0 then StringGrid1.ColWidths[j] := maxSzeles;
end;
lefogadom hogy igy mar teljesen vilagos mirol van szo. sot, talan a tanarok is elboldogulnak velenicht kompot
-
lao ce
aktív tag
sajnos nem tudom micsoda az hogy 'tipusos' de tudom mi az a fajl
en vegigmennek az oszlopokon
for i := 0 to ColCount - 1 do
...grdSajat.Cols{i}.SaveToFile( fajlneve );
illetve betoltesnel
...grdSajat.Cols{i}.LoadFromFile( fajlneve );
persze, lehet hogy ez nem eleg tipusos sajnos
szerk: { } = szogletes
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
sajnos a rave reportot nem ismerem.
ha a select az jo csak egyszeruen tobbszor jon a nev a kulonbozo orak melle, akkor a riportban kell olyasmit keresni hogy suppress duplicates vagy ilyesmi. mondjuk en jobb vagy duplaklikkelnek a nev mezon, csak van valami property vagy options, aztan ott keresgelnek.
az is lehet hogy egyszeruen logikailag rosz helyen van a nev, nem detail bandra kell rakni, hanem group band szeru dologra -egy lepessel kifele. lehet hogy letre is kell hozni pluszban ezt a band-et. tanarbacsi adatai a groupbanden, orak neve a detail banden.
ha a select a ludas azaz ismetles van az eredmenysorok kozott, akkor distinct kulcsszo kell (select distinct tanarbacsineve, oraineve from....)
tisztogatas: csak megemlitem, hogyha duplaklikkelsz a warningra (vagy az errorra) a kurzor odaugrik ahol a felesleges valtozod van, es csak egy mozdulat kiszedni a sort...nicht kompot
-
lao ce
aktív tag
ingovanyos a tudasom ezen a teruleten, de valami ilyesmi:
type
...TSajat = class(TButton)
private
...FUzenet : string;
protected
...procedure MouseDown... override; // <- atvesszuk a hatalmat!
published
...// Uzenet property lathato kivulrol mint egy string
...property Uzenet: string read FUzenet write FUzenet;
end;
procedure TSajat.MouseDown...
begin
...inherited; // <- megcsinaljuk amit amugy is
...// es pluszban:
...if FUzenet<>'' then ShowMessage( FUzenet );
end;
szokas szerint nem probaltam kinicht kompot
-
lao ce
aktív tag
egyebkent mar akartam irni hogy nagyon jol csinalod amit csinalsz. oszinten mondom, le a kalappal, buszke lehetsz magadra hogy ennyire hatarozottan vegigverekszed magad ezeken a dolgokon.
sajnalom hogy hosszu lett a hozzaszolasom, de ne becsuld le magad annyira, meghogy par ora... en oda illesztenem be a type-ot ahova irtam, keresd meg (ha akarod) az implementation alatt van.nicht kompot
-
lao ce
aktív tag
osszeolloztam neked egy unitombol dolgokat
unit Valami;
interface
uses
Windows, ... ;
// ez a delphi dolga, akkor kell babralni ha be kell tenni
// pl a math unitot kezzel mert akarsz hasznalni egy fuggvenyt;
// ez a resz lathato masik formokrol is egesz az implementation szoig
// sajat global procedures, functions amiket speciel en mindig global nevu
// elkulonitett unit(ok)ban tartok, de egye fene most legyen itt egy par:
function GetSystemPath(Folder: Integer): string;
procedure MoveForm(Button : TMouseButton; aForm : TForm);
// ez a formod
type
Tfrm = class(TForm)
...
// innen neha ki kell torolni egy-egy eventet ha a delphi mar elvesziti
// a fonalat hogy mi a fenet is akar a programozo, de joreszt sajat maga;
// elintez mindent;
procedure Button1Click(Sender: TObject);
...
private
{ Private declarations }
// ide lehet beirni sajat funkciokat amik a formra vonatkoznak
// a kozvetlen elonye ezeknek a helyeknek (priv and publ) annyi,
// hogy nem kell leirni az itt deklaralt funkciodon belul hogy
// formneve.labelneve.caption hanem eleg a labelneve.caption.
public
{ Public declarations }
// ez a masik hely, ezeket a dolgokat masik formokrol is meg lehet hivni
end;
const
alma = 'asd';
// ez a formod hehe... 'megtestesulese' es egy sajat globalis valtozo
var
frm : Tfrm;
bela : string;
implementation
// ez a te dogod, a formok kereszthivatkozasai;
uses unitMain, unitDM... ;
// ez a type egy sajat tajpra pelda, lehet tobb is egymas alatt
TEditModes = (
emInsert,
emUpdate,
emDelete,
emView
);
const
korte = 'qwe';
// ezek a unitra vonatkozo sajat valtozok, minden procbol elerhetoek;
var
b : integer;
{$R *.dfm}
// es itt elkezdodik a programod;
nincs idom atnezni, lehet hogy nem tokeletes, lehet javitani.nicht kompot
-
lao ce
aktív tag
hat, ha eljutottal akkor miert nem azt mondod mi a baj
a buPrintClick a click eventje a gombodnak
ez meghivja a PrintGrid procot
a sok magyarazat helyett azt mondom, hogy a type-ot a type-ok utan ird, a var-t a var-ok utan. de szerintem vedes elott nezz utana a delphi unit felepitesenek, hatha rakerdeznek aztan illik tudni nagyjabol.nicht kompot
-
lao ce
aktív tag
ertem en: a kezdet nem konnyu.
mindenkeppen azt gondolom, hogyha nehez hosszabb angol szoveget ertelmezned (senki sem szuletik ugy), akkor erdemes lenne venned magyar nyelvu programozasi alapokkal foglalkozo konyvet. ha az alapok megvannak (nem olyan veszes, szerintem az egesz 2-3 het olvasgatas talan), akkor lehet egy delphis konyvet venni.
nem bantasbol irom hanem segitsegkent, hogy senki nem fogja tudni tizezer problemadat megvalaszolni sem itt sem mashol, csak te magad. viszont ha a konyveken atragtad magad, gyorsabban fogsz tudni haladni mint mindig varni hogy valaki valaszol, azt nem erted, akkor visszkerdezel arra megint varsz stb.
ezt a sort tedd egy button onclick esemenyebe.
ShowMessage( ' ArcSin-je az EditBox ertekenek = ' +
...FloatToStr (
......RadToDeg (
.........ArcSin (
............StrToFloat( Edit1.Text )
.........)
......)
...)
+ ' fok.' );
nem probaltam ki, de gondolom megy persze a pontok nelkul... es persze csak remelni tudom egy ez kell.nicht kompot
-
lao ce
aktív tag
kedves yksz
eloszor mit akarsz vegrehajtani? az arcsin-t igaz?
masodszor?
a degtorad-ot? nem, hanem a radtodeg-et.
tehat az arcsin-nek kell a belso fuggvenynek lennie es a radtodeg-et hasznald kivul.
szerintem olvasd el a help-et ami ezekhez van irva es probald megerteni mit is csinalnak a fuggvenyek.nicht kompot
-
lao ce
aktív tag
hat, mint a legtobb ma hasznalatos nyelvben, vannak konverzios fuggvenyek.
ezeket erdemes attanulmanyozni a helpben (csak f1 a delphiben hogy feljojjon a help aztan copy paste a kivant sort a masodik vagy harmadik tab fulecske oldalan):
Floating point conversion routines
Numeric formatting routines
Type conversion routinesnicht kompot
-
lao ce
aktív tag
1) nezd, nem sokat tudok mondani. hogy nem mukodik, mi nem mukodik pontosan? ird le reszletesen. workaround latatlanban: bontsd fel 10 db 20 kb-os file-ra es kesz.
2) emlekeztetnelek ra hogy az ampersand specialis jelentessel bir, minthogy a keyboard shortcutot lehet vele beallitani (accelerator karakter, tudod alt + az alahuzott karakter a focus controlban beallitott komponensre fokuszal). ennek megfeleloen bizonyos helyeken (caption, menu, mittudomen, ahol van ertelme) alahuzodik az & jelet koveto betu.
mas helyeken (mondjuk egy string valtozoban, vagy tedit text properyben) ahol nem lehet ilyen szerepe, siman hasznalhato mint normal karakter. szoval az, hogy egyszer igy egyszer ugy mukodik nem teljesen igaz, mivel definialhato hogy hol mikent mukodik. ha & jelet kell hasznalni mondjuk egy caption-ben, akkor egyszeruen duplazd meg es kesz, hasonloan mint a ' jelet egy stringben.nicht kompot
-
lao ce
aktív tag
1) elsore kikapcsolnam az adatbazis konnekciot, akkor tok uresnek kell lenniuk a dolgoknak. de hogy ezt meg lehet-e tenni tervezestol fugg, ha nem igy lett felepitve lehet hogy egyszerubb a leirason valtoztatni mint a programon. 'mikor belepsz a programba a 'startup plus' kenyelmi szolgaltatas rogton az elso rekordot allitja be a kepernyon', ez az idezetem copyrightos
2) ugy hangzik hogy valami valtozot nem reszetelsz a kereses elott, esetleg egy rossz if statement atugorja a kereses meghivasat. debug, debug, debug.nicht kompot
-
lao ce
aktív tag
1) ini file size
legjobb tudomasom szerint 64k a limit. ha neked ez eleg akkor eleg 65499 byte is. tovabba lehet hogy 36 entered (sorod) van a fileban, nem tudom.
2) & jel kiiratasa. van mas megoldas is, de ha mar egyet talaltal az eleg, nem? itt egy tudomanyos megoldas ha tetszik, vettem a faradtsagot es megneztem a kodjat az andnek
const
ANDSIGN = #$26;
Showmessage( 'Drag'+ ANDSIGN + 'Drop' );nicht kompot
-
lao ce
aktív tag
hat, hogy vannak letarolva a kepeid (image, imagelist, vagy van valami strukturad)?
vegyel fel egy valtozot a unitodba es leptesd a timer proceduran belul, aztan annak megfeleloen ahogy all a kulonbozo kepeket rakd ki -attol fuggoen hogy mi a valasz az elso kerdesemre. mikor a szamlalo tullepi a kepeid szamat akkor nullazd.nicht kompot
-
lao ce
aktív tag
válasz CsendPenge #228 üzenetére
en azt hiszem hogy a create akkor hivodik meg mikor igazandibol a create-nek mar vege, azaz inkabb after-create. azaz lehet hivatkozni a komponensekre amik ott csucsulnek a formon.
amit irsz, az AV inkabb akkor jon ha probalsz hivatkozni a dolgokra mielott a formot letrehozod.nicht kompot
-
lao ce
aktív tag
en befejeztem a kis trees programot, azt hiszem jol mutat. mindenesetre a user interface jo lett ezzel a megoldassal.
most plsql-ben gyurodok, gyakorlatilag report generatort kell ujrairni a reportokbol. lesz benne egy kis asp, meg delphi is office automation-nel ha mar vegre az eredmenyek egyeznek.
Sync Edit jol hangzik. ismered a textpad nevu programot? jo lenne ha a delphi editor hasonloan mukodne mint az - minden masra azt hasznalom, oruletesen kenyelmes.
amugy d5-ot hasznalok, a sok programot huzom magam utan mint egy egyre hosszabb farkat es hat a migracio azt hiszem egy orokos feladat lenne... ha egyaltalan... hmm... erdemes.nicht kompot
-
lao ce
aktív tag
-tusi, ha break point-ot raksz ezekre a sorokra, akkor a Combox1.Text -nek es az itemindexnek mi az erteke a sor vegrehajtasa elott?
-tegyel le egy gombot a formra es messagedlg-vel irasd ki az erteket a combo1.textnek. mielott beszursz irasd ki az erteket. jo vagy rossz?
-tegyel breakpointot a gombod programjanak eslo sorara ami a beszurast csinalja es kovesd vegig (f7 vagy f8), nem hivodik-e meg az insert ketszer veletlenul
a break pointot irtam mar neked, mikor ez a problemat eloszor emltetted. azt javaslom probald megtanulni hasznalni, mert e nelkul keptelenseg debuggolni hatekonyan. olyan nincs hogy ketszer ketfele ertekkel hajtodik vegre valami ugy hogy semmi sem valtoztatja meg az ertekeket kozben, szoval valami ossze van kuszalva nalad. ezt a fajta problemat csak ugy 'fejben', bamulva a sorokat nincs sok ertelme megprobalni megtalalni.
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
haho!!!!!!!
vegre
nagy projektben voltal hogy igy eltuntel?
szerk:
najo, ugy is szep ahogy irtad, en gyakorlatban a komponensek neveivel jatszok (mert azert lehessen mar edit-et hasznalni ugy is hogy nem akar kitoltodni mindenaron ) azert maradt bennem ez a megoldas-sema.
mindenesetre a szamlalo := szamlalo + 3 valoban az if statementen belul kell legyen es ez hiba az enyemben egyertelmuen, a tiedben jol van... ok-ok
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
válasz <Adamsky> #206 üzenetére
jol indultal el. en csinalnek egy ciklust ami az osszes komponensen vegigmegy, aztan ha editboxhoz er amibe masolni kell valamit, akkor beirnam az aktualis szamot, amit viszont egy szamlalo kell mutasson...
a kulcs amit en megneznek a helpben a ComponentCount, a Components es az 'as'. ezek alapjan mar meg tudod irni a programot, alabb irom az en valtozatomat amit nem ellenoriztem szoval lehet hogy hibas valahol.
const
szoveg = '11,10,09,08';
var
szamlalo : integer;
szamlalo := 1;
// szamoljunk osszes komponenst
for i := 0 to ComponentCount-1 do begin
// vajon ez egy edit box amibe irni kell?
// persze, az edit neve Edit1...Editx, tehat csak az elso 4 karaktert kell nezni
if copy (Components.Name, 1, 4) = 'Edit' then
...//igy csinalhatsz a tipustalan komponensbol editboxot,
...//es erheted el a value prop-t:
...(Components as TEdit).Value := copy(szoveg, szamlalo, 2);
// harmasaval egyszerubb, i-t nem lehet hasznalni mert az osszes
// komponenst megszamoljuk a formon, azokat is amik nem edit boxok
szamlalo := szamlalo + 3;
end;
ha van harom edit box-od akkor kitolti, ha felteszel egy negyediket akkor is kitolti a nelkul hogy a programban valtoztatnal.nicht kompot
-
lao ce
aktív tag
válasz Tele von Zsinór #195 üzenetére
mostmar ertem mit akarsz elerni csak sajnos azt nem hogy mi az ami nem sikerult ebbol, ugy latszik nem pendulunk egy huron
itt van par oldal ami esetleg erdekelhet:
http://delphi.about.com/od/kbwinshell/l/aa121801a.htm
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_11886178.htmlnicht kompot
-
lao ce
aktív tag
azert a bde mar nem valami tamogatott es javasolt dolog, de gondolom a tanarbacsi azt ismeri. legalabb ado-ig illene felfejlodnie es akkor csak ot evvel lenne lemaradva.
a dbgrid stb hasznalatanak van ertelme sok helyen, de en ugy erzem foleg arra jo ha meg kell mutatni egy recordot. editalasra valoban a 'sima' komponensek rugalmasabbak.
nem tudom miert nem torol recordot. en a helyedben nem vacakolnek sokat azzal hogy hogyan lehet azt kijavitani, feldobnek egy altalanos celu query-t a datamodule-ba amit csak modositasra hasznalok (insert update delete), beallitanam az adatbazis elerest, aztan valami ilyesmi:
procedure genQueryRunDML (aSQL : string);
begin
// data mod language futtatas
qryGenDML.Close; // biztos ami biztos
qryGenDML.SQL.Clear;
qryGenDML.SQL.Add ( aSQL );
qryGenDML.ExecSQL;
// esetleg commit ha kell
end;
procedure genDeleteRecord ( aTableName, aWhereClause : string );
var aSQL : string;
begin
// osszeallit egy delete sql stringet
aSQL := ' delete from ' + aTableName + ' where ' + aWhereClause;
// itt a altalanosan megfogalmazott rakerdezes helye: biztos a torlesben?
genQueryRunDML (aSQL);
end;
proc EnGombomClick...
genDeleteRecord ( 'KedvencTablam', ' MezoID = ' + ValtozoID );
kesz, mert ennek mennie kell ha fene fenet eszik akkor is. ennel persze lehet szebben es jobban csinalni ( pl ha minden ID mezo neve kotelezoen a tabla neve + ID akkor csinosabbra lehet irni , hibakezeles -ha nem sikeredett a torles, stb ) , de ebbol is talan kaphatsz otletet.nicht kompot
-
lao ce
aktív tag
ne haragudj a 'gombnyomas kodja' hulye megfogalmazasert. oszinten en kicsit zavarban vagyok neha hogy most magyart vagy angolt hasznaljak. az 'en idomben' meg angol nevei voltak a dolgoknak... no mindegy KovacsUr persze jol mondta mirol van szo, onClick event program sorok.
D + Ora az nyami, tudok segiteni ugy erzem mindkettoben. csak ird meg hogy milyen adatbazis elerest hasznalsz odbc, ado, esetleg az allround-os doa-t? azt is hogy szabad kezed van oracle-ben, barmit hasznalhatsz (proc, view, trig. stb stb) ? az is erdekes hogy mihez ertesz pl ha sql megy akkor pl/sql is megy, azaz repulnek a package-ek az oracleben a delphi csak megmutogatja a vegeredmenyt?
(es kerlek nekem ne koszonj semmit... nem is ertem... semmit sem csinaltam. (ez a tema lezarva))nicht kompot
-
lao ce
aktív tag
válasz Tele von Zsinór #183 üzenetére
szivesen segitenek ha tudnam mi az a 'talca' (tray vagy taskbar) es mi az hogy 'eltuntetni' egy progit ( leallitani vagy az iconjat elrejteni ) es mi az hogy 'egy progit' (a tiedet vagy egy kulsot ami mar fut es a tiedtol fuggetlen)
mindenesetre ha a tray icon-jat akarod elrejteni a programodnak akkor probalkozhatsz a Shell_NotifyIcon korul.nicht kompot
-
lao ce
aktív tag
tusi
probalj lerakni break point-okat a gombnyomasok kodjara es f7-tel lepegetni...
hasznald a ctrl + f7 -et hogy megnezhesd az erteket az objektumaid parametereinek (combo itemindex pl)
ne haragudj ha te ezt mar ezer eve csinalod es tudod, nem lekicsinylesbol irtam, hanem hatha nem tudod ezeket es hasznosak hibakeresesnel.nicht kompot
-
lao ce
aktív tag
Divi:
az adatbazist en altalaban visio-ban hozom letre eloszor ( 'papiron' megtervezem ), aztan bekerul az adatbazisba, legyen az barmelyik is, egy 'mennel kenyelmesebb annal jobb' adminisztracios interfeszen keresztul. nalam mindig van valtozas az adatbazis strukturaban a programfejlesztes alatt, mert egyszeruen nem birok mindenre gondolni, de ha megis akkor a k. megrendelo talal ki valamit.
az adatbazis strukturat magat letrehozni futasi idoben lehetseges, de legtobbszor talan mondhatom hogy felesleges, az install kell hogy kepes legyen az ures adatbazist odatenni az exe melle. egy upgrade eseteben mar lehetseges hogy db struktura valtoztato sql-eket kell vegrehajtani, merthat ugyi meg kell tartani a regi adatot de valahogy meg kell valtoztatni alatta a tablakat, viewkat stb.
ha serult az adatbazis akkor lehetseges hogy letre kell hozni ujra, de ilyen esetben azert a backupot illik elovenni. lehet hogy specialisabb kornyezetben ultrahordozhato kodot kell eloallitani akkor erdemes felepiteni az adatbazist kodbol.
az adatbazis adminisztracio attol fugg milyen a db motor. vannak oracle es sql servereknek 'karbantartja magat' valtozatai illetve beallitasai, amik tobb-kevesebb sikerrel elvegzik a legkommerszebb dolgokat (ugyancsak van nekik felugyelet nelkuli installjuk). az accessnek van repair lehetosege ami meghivhato programbol - mondjuk minden backup utan. en a reszemrol mikor access-t hasznalok akkor a program elindulasahoz hozzatartozik a backup a hatterben, amibol tartok 10-15-ot. ki se lehet kapcsolni. hasonlokat meg lehet csinalni a 'nagy tesokkal' is, persze azoknak a backupjuk joval kifinomultabbak.
attol fuggoen mekkora az adatok erteke az adatbazisban, egy pont utan erdemes megfontoltatni a megrendelovel egy havi alapu db karbantartast.
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
hat arrol van elkepzelesem hogy en ezt hogyan csinalnam.
kerdes amugy hogyha cmb1 = Kiss es cmb2 = Bela
akkor az osszes kiss vagy bela kell megjelenjen vagy az osszes kis es bela?
amugy a checkboxokat hanyagolnam, az elso item minden comboban lehetne (all) vagy (minden) valasztas. kevesebb objectum = egyszerubb interfesz.
aztan kb... van egy sql valtozo, mondjuk aSQL
a combokat elnevezheted ugy mint a fieldek nevei, de egy cmb-vel az elejen, tehat cmbFirstName, cmbKeresztnev
az eleje az aSQL-nek valami ilyesmi lesz (megtartanam space-eket a ' jelek utan es elott!)
aSQL := ' select f1, f2, f3, f4 from table where ';
itt a datum
aSQL := aSQL + ' ( DateField >= #' + MyDateObj1.Value + '# ';
aSQL := aSQL + ' and DateField <= #' + MyDateObj2.Value + '# ) ';
aztan ugyi... vegig egy for ciklussal a kombokon
for i := 0 to ComponentCount-1 do begin
___currCompName := copy (Components.Name, 1, 3);
___currFieldName := copy(Components.Name,4, Length(Components.Name)-3 );
aztan mikor komborol van szo es raadasul nem a (minden) van kivalasztva:
___if (currCompName = 'cmb') and
______((Components as TCombobox).ItemIndex > 0) then
akkor hozzaadjuk az aSQL valtozohoz azt a feltetelt hogy ' and fieldname = ertek '.
meg az is van hogy itt 'and' vagy 'or' attol fuggoen hogy kiss bela hogy kell megjelenjen az elso kerdesben.
persze, ez nem ENNYIRE egyszeru mert lehet szam is meg text is meg date is a tipusa a dolognak. ez most text akar lenni de csak nem biztos hogy szintaktikailag helyesen irom.
aSQL := aSQL + ' and ' + currFieldName + ' = ''' +
Components as TCombobox)..Items.Strings [ (Components as TCombobox).ItemIndex] + ''' '
aztan egy par end a vegere es lehet futtatni a query-t.
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
- en mindig sima combo-t hasznalok
- az auto feltolteshez amugy is a DBLookupComboBox -t kellene hasznalni...
- a dbcombonak igenis VAN itemindex-e, annyira elbizonytalanitottal hogy megneztem a helpben
- szerintem (bar nem hasznalom) elallitodik, hiszen erre valo, hogy az itemindex-szel elallitodjon a db is, nem?nicht kompot
-
lao ce
aktív tag
ha az eredmeny megjelenik az elso formon is vizualis formaban (mondjuk label-en) akkor valaszthatod azt is, hogy kozvetlenul elered.
miutan csendpenge tanacsa szerint a masodik form forrasanak a uses reszebe beirod az elso unitodat,
{
implementation
uses
untElso;
}
a masodik unitbol el tudod erni az elso unit formjan levo objektumok erteket.
tehat untElso.frmElso.lblEredmeny.Caption
es azt hogy untElso el lehet hagyni ha akarod.
csak azert irom, mert sokszor csak ki kell irni valamit a kepernyore az ilyen helyzetekben es szerintem ilyenkor felesleges valtozot hasznalni a 'masodik formokon', aztan hatha ez a helyzet nalad is veletlenul.nicht kompot
-
lao ce
aktív tag
en ezt abszolut nem hasznalom, de ha jol emlekszem van olyan hogy applyupdates az adatbazisra (vagy a queryre is?) es akkor hivodik meg az ami az updatesqlben van (tranzakciostul? nem tudom). azt hiszem az egyik peldaprogram a delphi examples-ek kozott errol szol.
nicht kompot
-
lao ce
aktív tag
egy szoval folytatva, hogy nem minden komponens tokeletes a kapott bitmap-ben.
ahogy melyebbre asom magam rajottem hogy vannak cegek akik ebbol a problemabol elnek es erre kinalnak megoldasokat.
en is joba kezdek bele.
talaltam egy helyet ami forrast mutat:
http://www.fengyuan.com/article/wmprint.html
de ez mar tul magasnan van irva nekem, megmondom oszinten eltartana ezer evig mire atirnam (merthogy a CPaintHook is kell ugyi)
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
ezer koszonet a segitsegedert! kiprobaltam, szuperul alakul, valami bitmap bizony van a create es a show kozott amit visszaad.
lehet hogy kicsit belemaszok, mert a kapott kep eleg hmm... sematikus az onshow elott, se button se combo csak hatterszin, edit box meg mondjuk shape.nicht kompot
-
lao ce
aktív tag
igaz, nem statikus, de nekem nem kell a frissites resze, csak egy 'capture' egy bitmap-be, de mielott(!) a kepernyore kirajzolodna barmi is.
a wm_paint / onpaint is OK, onpaint szimpatikus, de az onshow utan jon, az onshownal mar megjelenik a form, szoval ez tul keso.
raadasul meg mindig sotet folt elottem hogy lehet-e a formot nem a kepernyore rajzoltatni hanem bitmapbe.
ok, gondolom valamit kavarni kellene a memory bitmap-ekkel, es ez rendben van, elvileg tudom mirol van szo. de ha mondjuk probabol csinalok egy assgn-t egy memory bitmap canvasra... inkabb ideirom:
Bitmap.Canvas.Assign( Form1.Canvas )
akkor jon ez:
cannot assign a TControlCanvas to a TBitmapCanvas
[Szerkesztve]nicht kompot
-
lao ce
aktív tag
lenne nekem is egy kerdesem.
megfordult a fejemben eleg erosen, hogy szeretnek nehany kulonleges form megjelenulest csinalni - arra gondolok ahogy elobukkan egy uj form a kepernyon.
egy bitmapet mar lehet csurni-csavarni, szoval ugy gondolom, hogy az lenne a modja a dolognak, hogy
- megrajzolni a formot egy bitmapre (vagy megtalalni hogy a memoriaban hova rajzolodik es arra egy 'capture' szeru dolog?)
- aztan ez a kepet kicsavarni a kepernyore csilivili modon,
- megjeleniteni (folerajzolni) az igazi formot az igazi objektumokkal hogy ugyi mukodhessen.
- letorolni a bitmapet a form mogul.
azt hiszem kellene valami a form create es a form show kozott. mondhatna az ember hogy a show elott a form grafikailag nem letezik, de akkor a doublebuffer hogy mukodik? hisz az azzal kerkedik hogy eloszor megrajzolja a formot aztan egy lepesben megjeleniti!nicht kompot
-
lao ce
aktív tag
hat, talan magat a komponenst is bele lehet gyomoszolni, en mindenesetre custom draw-t hasznalnek es magam rajzolnam a progress bart a cellaba vagy sorba (attol fugg ugye hogy mit hasznalsz).
peldaul ha listview-nal maradunk, akkor a CustomDrawSubItem eventben lehet sajatokat alkotni.
nagyjabol arrol van szo hogy:
Item.DisplayRect(drBounds) a negyszogedet adja amit ippen rajzolsz;
Sender.Canvas.Brush.Color es Style amivel beallitod a szint es stilust;
FrameRect es FillRect ami tenyleg kirajzolja a rectangle-t;
aztan ezt akkorara rajzolod amit a progress-ed megkovetel. de teljesen ki tudod elni magad, azt teszel bele amit akarsz
csak elkezdeni nehez, aztan eleg elvezetes rajzolgatni.nicht kompot
-
lao ce
aktív tag
hat, sok otletem nincs.
kiprobaltam ezt:
procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: integer;
Buf: array[1..102400] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1); { Record size = 1 }
AssignFile(ToF, ToFile); { Open output file }
Rewrite(ToF, 1); { Record size = 1 }
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
ez speciel egy file copy de talan ad neked otletet, buffer size-t lehet allitani az elejen. a legnagyobb fileom egy 700 megas film volt amit hirtelen talaltam, eleg szepen es gyorsan csinalta... na remelem mas okosabb lesz mint ennicht kompot
-
lao ce
aktív tag
de hulye vagyok, hat irtad hogy szekvencialisan szerinted lassu.
megmondom oszinten, hogy szerintem a sebesseg amit szekvencialis feldolgozassal elerek osszemerheto azzal amit monjuk egy kopi-paste csinal egy parszaz megas file-lal, persze hozzaadodik a delphi rutin tokolodese.
bocsi hogy nem segiteknicht kompot
-
lao ce
aktív tag
nem tudom pontosan mit jelent az hogy 'kezelni' akarod.
szoval a javaslatom hogy olvassad es dolgozd fel soronkent szekvencialisan, igy nincs korlat tudtommal.
en olvasok es feldolgozok nehanyszaz megas fileokat amik adatbazisba mennek utana, azok elegge repulnek - persze nekem nem kell 'real-time' sebesseg.nicht kompot
-
lao ce
aktív tag
a nevem mit jelent? nezz utana ha erdekel, alapmuveltseg.
az alairasomnak van ertelme, es egyebkent idezet egy regi magyar filmbol.
''Az egeszet nem nagy dolog megcsinalni, csak szeretem latni, hogy mit csinalok''
jo szerencset a keresgeleshez, ha megtalaltad ird be ide a forumba a megoldast.nicht kompot
-
lao ce
aktív tag
nekem eleg nehez veled beszelgetni de meg nem adom fel.
ezt irtad te: 'Hello, es ha durvan fogalmaztam, sertegetesnek tunne, akkor kerlek ne vegg annak'
ezt irtam en: 'amugy nem veszem sertesnek a hozzaszolasod, mert te nem tudsz engem megserteni'
erre te azt irtad hogy nem erted miert irtam ezt a mondatomat. melyik reszet nem erted pontosan?
'ritka dolog, de ez ertelmes hozzaszolasod volt.'
koszonom az ertekelesedet, majd dicsekszek vele tarsasagban.
'Egyebkent az egeszet megicsinaltam vonalak nelkul'
ha megirtal egy komplett amobaprogramot akkor rendkivul erdekes hogy nem birod begepelni azt a peldat amit irtak neked es ami egy vacak vonalat huz a vacak formra.
'Ha gondolod elkuldom, vagy valami'
ne kuldd el. probald ki a vonalhuzast. ez a tanacsom.
'Az egesz delphi rendszerhez annyira nem ertek, hogy ebben a temean nem is nagyon tudok ''erofesziteseket'' tenni.'
marpedig azt neked kell megtenni, annal nagyobbat mennel jobban nem ertesz hozza.nicht kompot
Új hozzászólás Aktív témák
Hirdetés
- Logitech g pro x2 lightspeed wireless headset
- iPhone 13 128gb fehér, gyári független, hibátlan
- Eladó Apple iPhone 13 Pro 128 GB SILVER PATIKA ÁLLAPOT
- Tápegység Moduláris Kábel Tápkábel Adapter Hosszabbító Csatlakozó Elosztó - Egyedi is
- Pcie 5.0 ATX 3.0 12Pin - 16Pin Moduláris Kábelek És Adapterek 12VHPWR 12v2x6 Egyedi Harisnya Nvidia
- Samsung S10 + Plus plusz 512Gb új/gyári 5hónap garancia akkumulátorral
- HP 2311x LV176AA FullHD 23" Monitor ELADÓ
- Kártyafüggetlen Iphone 8 plus 64GB, 100% Akksi!
- Eladó Fortnite Cobalt Star Bundle kód - PS5
- Lenovo Thinkpad T490 i5-8365u/16GB/256GB SSD/14"FullHD touch magyar bill. Garanciás laptop eladó
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest