Delphi programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


QG
(tag)

Mielott barki javasolna, hogy ezt a prog.hun tegyem fel, kozlom megtortent, de azok jo munkasemberek, csak reggel jarnak arra, nekem meg most kene.

Szoval, hogyan ellenorzom Delphiben egy komponens letezeset?

if Button3 letezik then
begin
.
.
end;

szoval hogy lehet ezt jol?

QG


Giruna
(tag)

Ha kézzel tetted le akkor a visible vagy ehez hasonló tulajdonsásgát kéne megnézned ha true, akkor létezik. Ha kódból teszed ki, akkor pedig szintén ezt vagy valamely hasonló property-jét kéne nézegetni.


Alan
(aktív tag)

...ehm, és akkor rögtön jön az access violation a 00000000 címre hivatkozással. Súlyos hiba létre még nem hozott komponensek tulajdonságait vizsgálgatni.

A helyes módszer: if Assigned(Button1) then ...


Alan
(aktív tag)

Arról nem is beszélve, hogy egy éppen nem látható komponens (Visible = False) még nagyon is létezhet és virulhat.


Divi
(aktív tag)

============ Attention ============
Delphi 6

Szeretnék írni egy ''komolyabb'' programot ami igen sok adatot kezel.
Az, hogy Adatbázisban vagy egy jól megszerkesztett TEXT fájlban tárolja le az adatokat 1 dologtól függ. Hogy van-e rá mód, hogy a text fájlomat úgy kezeljem, ahogy szeretném, azaz...

Hogyan lehet Delphi alatt egy már MEGLÉVŐ text file egy sorát átírni jeletősebb macera ( fájl újraírás) nélkül?

Magam nem találtam semmi olyan parancsot ami egy text file SOR mutatóját állítani tudná, és hogy az adott sort kiolvassa majd visszaírja valami más adattal!

Help me please!


KovacsUr
(addikt)

if Assigned(Button3) then
//jaj de jó!
else
//nem jött be


Divi
(aktív tag)

(#1) QG Válasz | Email | 2003-11-14 01:21:42

msg#5 itt a lényeg :D

[Szerkesztve]


KovacsUr
(addikt)

Jól van na, a moderátor is ember. Vagy mi. :DDD

(Mellesleg látom, #3-ban már a válasz is elhangzott :) )


KovacsUr
(addikt)

A fájl újraírása nélkül ez nem fog menni sem Delphiben, sem másban. A szövegfájlt csak szekvenciálisan tudod elérni. Gondolj csak bele.


Divi
(aktív tag)

Ötlet:
És ha mondjuk mitadisten a Fájl egy File of String; (hogy tudom rávenni, ,hogy többet tudjon letárolni mint 255 karakter?
akkor már működik a Seek és lehet módosítani is :)

Azért iggen kellett a hozzászólásod, hogy ez kipattanjon a fejemből :D

Gondolom te akkor benne van a programozósdiban. Az elkövetkezőkben tudnál egy kis figyelmet fordítani a hülye kérdéseimnek? :U (ha nem okoz nezézséget)


zenit
(tag)

Használhatod ezt:
type TItem = array[0..1023] of Char;
Ezzel 1023 karakter hosszú szöveget tudsz tárolni (plusz egy lezáró #0 karakter). Így már mehet a file of TItem, ahol a rekord mérete 1024 bájt lesz.

String (S) -> TItem (Item) konverzió a fájl írásához:
StrLCopy(Item, PChar(S), SizeOf(Item) - 1);

Olvasás után pedig csak egyszerű értékadás kell: S := Item;

Halkan megjegyezném, hogy a file of ... használata Delphi-ben elavult dolognak számít, helyette használj inkább TFileStream-et. :U


Divi
(aktív tag)

Ki tudnád feljteni pozitívumait/negatívummait?

Egy barát már ajánlotta, de mivel ez eddig teljesen ismeretlen dolog számomra, hogy mi is egyáltalán így jó volna egy kis felhomályosítás, hogy mivel tud többet
és hogyan kell vele megcsinálni, azt amit a sima ''File of'' -fal is meglehet :)

[Szerkesztve]


KovacsUr
(addikt)

...Csak hát ez így már nem szövegfájl, hanem egy 1024 byte hosszú rekordokból álló típusos fájl. :)


KovacsUr
(addikt)

Az elkövetkezőkben tudnál egy kis figyelmet fordítani a hülye kérdéseimnek? :U(ha nem okoz nezézséget)

Megpróbálok, ha nem gond, hogy néha kések egy-két hetet a válasszal... :)


zenit
(tag)

A TFileStream a fájl egyszerű bájt-szintű elérésére való, annak minden előnyével és hátrányával. Egyrészt közvetlenül a Windows API-re épül, szóval hatékony - bár ez ma már inkább csak elvi dolog, bár annak nem utolsó :).
Másrészt meg a VCL mindenhol a TStream osztályt használja, ami néhány alapműveletet definiál, a leszármazottai pedig (így a TFileStream is) ezeket implementálják.

Szóval érdemesebb neked is inkább ebbe az irányba haladni, mert később sokat fogod használni őket, ill. ezért nem érdemes már a pascal-os ''file'' típusba jobban belemélyedni. (Talán még a ''Text'' fájltípusnak van egyedül létjogosultsága, mert erre nem létezik elfogadható alternatíva, bár az más kérdés, hogy valóban szükség van-e rá.)


zenit
(tag)

De arra már te is rávilágítottál az előbb, hogy a szövegfájl, mint adatszerkezet, nem lesz jó.


BaliTHC
(tag)

Amennyiben a kérdéses Button3 nem publikusan deklarált (pl. dinamikusan került fel a Form-ra), akkor használható a

function FindComponent(const AName: string): TComponent;

művelet, ami név alapján megadja a keresett komponenst, vagy NIL-t.


Szenty
(tag)

Szia!

Mit jelent az, hogy igen sok adatot kezel? Több száz gigabyte-ot? Vagy sokat számol a program, és az eredményt (ami akár lehet kevés is) tárolná szövegfájlban? Fejtsd ki légyszi kicsit részletesebben!

Egy jó tanács: felejtsd el a szövegfilet, az soha nem is volt alkalmas adatbázisok tárolására (lásd kismillió féle CSV-formátum). Tanulj meg kezelni valami SQL-alapú adatbázist inkbább. (No meg az SQL-t)
Rengeteg szenvedéstől fogod megkímélni magad.

[Szerkesztve]


b14
(senior tag)

Hi
Ez a prog ''tikositana'' bar nem nagy cucc de szeretnem meg csinalni.
Mi benne a hiba?


var i:integer;
c:char;
s:Pcaption;
begin
for i:=1 to length(form1.Edit1.Text) do
begin
c:=chr(255-(ord(form1.Edit1.text)));
s
:=c;
form1.Edit1.Text:=s;
end;

szerkesztett:
Ezt a hibauzenetet adja:

Project Project1.exe raised exception class EAccess Violation with message 'Acess violation at address 0044F14A in module 'Project1.exe'. Write address 00000000'. Process stopped. Use Step or Run to continue.

[Szerkesztve]


VladimirR
(nagyúr)

a form1.edit1.text-et ne egyben, hanem karakterenkent titkositsd - visszavonva; az i-t kicsereltem j-re, mert igy dolt lett az egesz:DDD

valamint a ciklusod is zavaros kicsit

var j:integer;
c:char;
s: tcaption;
t:string;
begin
t:=form1.Edit1.Text;
for j:=1 to length(t) do
begin
c:=chr(255-(ord(t[j])));
s:=s+c;
end.
form1.Edit1.Text:=s;
end;

[Szerkesztve]


b14
(senior tag)

Hi
kosz szepen a megoldast, de sajna hibas ezert nem ''igazi'' megoldas.
Mivel a chr(255-(ord(c))); egy karaktert titkositana nem jo a te chr(255-(ord(t))); megoldasod, mivel az tcaption.
Azaer megi kosz


b14
(senior tag)

bocs ez mar nem jo mivel te kozbe modositottal az egeszen


b14
(senior tag)

professional and ezer thx.
Miota foglalkozol dephvel?

[Szerkesztve]


VladimirR
(nagyúr)

muszaj volt, mert a forummotor a [ i ]-bol dolt karakteeket csinalt :DDD
delphivel alig-alig foglalkoztam, viszont 10 evet pascaloztam

[Szerkesztve]


b14
(senior tag)

azt ertem es ertettem mar amikor mondtad es en meg most fogtam bele a delphibe


Szenty
(tag)

Bizony, jó is a pascal!!! ;)


b14
(senior tag)

ha nem sertem meg hany eves tetszik lenni?
mivel en onhoz kepest ovodasnak szamitok szamitasaim szerint

[Szerkesztve]


VladimirR
(nagyúr)

21


b14
(senior tag)

komoly?
mert akkor 10 eves korodtol a pascallal foglalkozol?


VladimirR
(nagyúr)

altalanos 4.-tol :DDD


Divi
(aktív tag)

Aztamindenti! Szépen megszaldt a topic. AMI JÓ :D
Nos a fejlemény az, hogy a Fájozós-átírós-tankozós-romantikus adatkezelés az akkor lett volna lehetőség, hogy tényleg könnyen tudtam volna ide-oda ugrálni a fájlban és kedvembre tudtam volna átírni dolgokat.

Mivel ez bukott így marad a Dbase kezelés bevágása.

Adattömeg mérete: Bátyám cégétől függ :) De a 10 megát szerintem ebben az évtizedben nem fogja átlépni. (Ha egyáltalán életképes lesz maga a koncepció)

Gyorsan vázolom hogy én hogyan képzelem az adattárolást
4 db tábla

1. tábla : A programot felhasználók adatai (user/pass//név/tel/e-mail/stb) + USERazonosító
2. tábla: Céglista: Azon cégek listája és adatai (cím/tel/@) + CÉGazonosító(k) és USERazonosító által szűrve
3. tábla: Külső cégek kapcsolattartó embereinek adatai (név/tel1/tel2/@1/@2/hülye hóbortok) + EMBERazonosítók és USERés CÉG azonosító által szűrve
4. tábla: Eseménylista: A cég elvégzendő feladatai.
Felhasználó kritériumai szerint szűrve.

1 tábla szűri az összeset.
2 tábla szűri, 3táblát vagy/és a 4. táblát
3. tábla szűri a 4. táblát
4. táblában meg olyan VAZZ sok rekord lesz, hogy jujj

Na az SQL az számomra nagyon messze van és tnylegesen 0 tudásom van belőle. Így a Delphi beépített eszközeivel szeretném megoldani.
A kérdés, hogy ezt a szűrős dolgot, milyen módokon lehet megoldnai? Hallottam valami Master-detail kapcsolatról, el tudná valaki mondani magyarul hogy mi ez? Vagy a Filtered opció elégséges megoldás egy tábla szűréséhez?

Nem gázos, hogy a 4. táblában már 3 ''fölösleges'' azonosító mezőt kellene alkalmazzak, hogy tudjak szűrni?

Válaszaitokat előre is köszönöm!


VladimirR
(nagyúr)

nem pont erre a kerdesre valasz, de tudsz filban ide-oda ugralni
csak nem szovegfileban, hanem tipusos fileban
neked pedig sejtesem szerint rekord tipusu filera van szukseged

type myrec=record
...blablabla...adattipusok...
end;
var f:file of myrec;
[...]

igy tudsz fileba irni, ill a mar benne levo adatokat tudod modositani (bar a kereses lassu szerintem)


Szenty
(tag)

Miért is ne foglalkozhatna? :)
Én is 10 éves lehettem, amikor elkezdtem programozni.
Igaz, akkor még C=64 Basic-ben. Utána jött C=64 assembly.
Aztán '94-ben jött az első pc, egy 486-os. Mivel a basicet ismertem, ezért maradtam a Turbo Basic-nél (akkor ez volt az egyetlen basic, amelyik tudott EXE fileokat generálni).
Aztán nagyon hamar a Pascal (és mellette hamarosan Assembly is). És még mindig ez a favorit. :)
Pascalból és Clipperből volt 5 órás érettségi vizsga.
Aztán a fősulin belekostoltam ebbe-abba: C, Java, OOP C++, Visual C++, Deplhi.
Meg mellette még megtanulgattam a Perlt, PHP-t is.
Jelenleg írom a diplomamunkámat, Perlben. ;)

[Szerkesztve]

[Szerkesztve]


lao ce
(aktív tag)

c64-es vagy? ''Mivel a basicet ismertem'' - haha
spectrum forever! :)


Divi
(aktív tag)

Utólag meggondolva megvalósítható. viszont teljesen letettem a file kezelgetésről. Szórakozzon vele a BDE :D

msg #31 ?


Szenty
(tag)

Volt szerncsém Videoton TV Computerhez, sőt, Primóhoz is.:)
Kőkorszak rulz. ;)


btotyi
(tag)

Hagy a BDE-t a francba. Ha kevés adatod van használj xml táblákat (ClientDataset) ha picivel több akkor pedig szánj rá egy kis időt és próbálj meg egy kis sql szervert ( pld. MSDE vagy beágyzott Firebird). Így ha később esetleg mégis több adatot, több felhasználót kell kezelni nem lesz probléma. Ha meg mégsem kell ilyesmi legalább tanultál valamit.

[Szerkesztve]


btotyi
(tag)

TVC + Floppy meghajtó + CP/M :)


BigK
(csendes tag)

A BDE-t mindeképpen tessék hanyagolni. Hogy rakhatta bele ezt a sz.rta a Borland a Deplhi csomagjába. Ahogy a kolléga javasolta használj MySQL-t. Vagy ha ennyire nem akarsz belefolyni, próbáld meg a Borland féle InterBase-t. Pofon egyszerűen lehet használni.


b14
(senior tag)

Hi
2 kérdésem lenne

1: delphiben ha kepeket hasznalok azt bele lehet valahogy forditani a kodba?
2: Pocket pc - re lehet valahogy forditani delphi progot?


KovacsUr
(addikt)

1: igen
2: nem

[Szerk.]
Kis kiegészítés: a Pascal nyelvet használhatod Pocket PC-s fejlesztéshez, csak konkrétan a Delphi nem tud a PocketPC által futtatható kódot generálni. Nézd meg a PocketStudiot: Bővebben: link.


b14
(senior tag)

thx
plus one question
Hogy lehet egy (grafikus) vonalat húzni a form-on?
Szerintem ott van a szemem elott csak tul bamba vagyok hozza


btotyi
(tag)

Canvas.MoveTo(10,10) ; // kezdőpont
Canvas.LineTo(100,100); // végpont


Divi
(aktív tag)

Miért utálja mindenki ennyire a BDE-t? :)
Nekem elég szipatikusnak tűnik. Bár sebességről, stabilitásrós semmit nem tudok.

Tehát, miért ne BDE?


btotyi
(tag)

Amíg csak egy gépen vagy addig istenes de több gép konkurens használat hálózatban, na ott lehet szívni. (indexsérülés, lock time out stb..., dbflush és tdutil használat szükséges ezerrel). Tehát ha csak a leghalványabb esélye is felmerül egy többes használatnak akkor már egyszerűbb mást használni. Az újabb Delphik (és a Borland) sem támogatja, ergo nem fejlesztik, javítják tovább. Szóval célszerű egyből elfelejteni. Léteznek kis, beágyazott ingyenes sql szerverek ( MSDE, Firebird). Egygépes, egyfelhasználós programot is célszerű így megcsinálni éa akkor gond nélkül lehet skálázni a rendszert. A firebird embedded változatánál egy dll-t (so-t) kell a progid mellé másolni és egy teljes funkcionalitású sql szervered van.

[Szerkesztve]


Divi
(aktív tag)

Értem, köszönöm a felhomályosítást. Hálózati kezelés LESZ. 5-10 júzer max.

Tehát akkor SOK kérdés van még az msg #31-ben. :DD Azt már megválaszoltuk, hogy a BDE felejtős. (Kár mert elég egyszerűnek tűnt :()

Érdekelne, hogy ti jó megoldásnak tartjátok-e erre a feladatra ezt a megoldást amit felvázoltam?

[Szerkesztve]


b14
(senior tag)

Nem
Ugy ertetttem, hogy grafikusan (form viewerben) látnám, hogy mit csinalok.
(amobaval probalkozok);


Divi
(aktív tag)

Kedves ti!

Tudnátok mondani egykét keresetlen szót, az InterBASe ről és a FireBird-ről?
mint Adatbázis kezelő dologról?
A Delphivel ha jól látom feltelepült az InterBase is.
A kérdésem annyi, hogy hogyan tudnám ezt életre kelteni? És milyen lépések kellenek, hogy Delphiben valami eredményt lássak?

b14: Bocs nem válasz akart lenni, hanem új hsz :)

[Szerkesztve]


btotyi
(tag)

Ott is így működik csak kell csinálni egy komponenst ami megcsinálja neked tervezési időben.


btotyi
(tag)

A FreBird (FB) az InterBase (IB) opensource-os továbbfejlesztett változata. Alapból jól használható az IBX komponensekkel csak az extrákat (új adattípusok stb) nem tudják használni. A használathoz kell egy IB/FB szervert futtatni a gépeden. Az IB fizetős és csak fejlesztéshez használhatod azt amit a jogtiszta Delphid-hez kaptál. Az FB természetesen free. Szóló gépen is gond nélkül fut a szerver és a fejlesztőeszköz együtt. Ha van futó szervered (NT,XP alatt szervizként szokott futni) azt meg tudod nézni, leállítani, indítani az IB Szerver managerrel. Ha a szerver ok akkor ibconsollal tudsz hozzá csatlakozni adatbázist, táblákat létrehozni. Ha ez megvan akkor Delphiben az IBX-komponenscsomagban található IBDataBase, IBTransaction,IBQuery komponensekkel lehet kezelni az adatokat.

[Szerkesztve]

üzenetek