TRegistration Delphi komponens

TRegistration Delphi komponens
2006-08-19T01:42:14+02:00
2006-09-09T19:24:34+02:00
2022-10-31T00:45:38+01:00
  • Na máris továbbfejlesztettem, amint leírtam a post-ot, szóval:
    1. .NewestVersion (String) property
    2. .NewestVersion.Major/Minor... (Int64) property
    3. .NewerVesionAvailable (Boolean) property
    4. .OnThereIsNewerVersion event (esetleg teljes fríssítő eljárással? Érdemes ezzel foglalkozni? Egyszerűbb programokhoz jól jöhet... Mint amilyenek az enyéim.)
    Mutasd a teljes hozzászólást!
  • "
    Nézd én ezt a komponenst minden szakmaiságot félretéve írtam meg!
    "

    Na megint behalt a topicom, pedig feltettem legalább három kérdést!

    Tervezett funkció a köv. verzióban:
    .NewestVersion (String) property (a netről próbálja meg letölteni, egy text file, pl.: 1.1.12.13).
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Na kész az 1.1-es pr magyarintott változata (úgyértem a Registration Tool magyarul kommunikáló változata is).
    Egy baj van szerintem magával a magyarintott regisztrációs komponensel, hogy maga az ablak egy kicsit csúnyább mint az angol... Asszem egy kicsit kevesebb amit írtam szöveg és és ezért még helyre kell pofozni egy kicsit szerintem.
    Megtalálható a csomagban a FilesystemDialogs.dll legújabb (1.7-es pr.) verziója is, néhány ominózus javítással is (1KB-tal nagyobb lett ).
    A mellékelt szöveg file-ban le van írva, hogy lehet használni a már meglévő magyar fordítását a komponens-nek, anélkül, hogy le kelljen fordítani az egész project-el együtt.

    TRegistration 1.1pr.zip 1.01MB

    Tényleg kiváncsi vagyok rá jutottatok-e már vele valamire!!!
    Nálam működik, már két programomban is.
    Mutasd a teljes hozzászólást!
  • Nem hiném, hogy le tudod myomni a módszerem, de hallgatom!
    Egyrészét, használom a resource string-es módszert is, tehát tudom, hogy mi a különbség, másrészt, a Translator Manager összes előnyét kihasználod: mutatja a változásokat (soronként!), egy paranccsal (Update resource dlls) frissítheted, kapásból bármennyi fordítás támogatása, stb.
    A kódnak összvisz nem sok köze van hozzá, mert mindig az aktuális rendszerben beállított nyelvi vagyis mellékelt teljes .dfm struktúrát tartalmazó lokalizációs file-t veszi a Delphi (által fordított program), tehát szinte semmi dolgot vele kódon belül... Nézd meg, ha nem hiszed el, hogy hogy működik, az egész kód része a FormCreate()-en belül van...
    Egyébként hogy csinálnád? Egy szintén nem látható text file-ba irnád a szöveget, ebben az esetben meg ott van minden kéznél az IDE-n belül...
    Nem merem megkérdezni, de használtad már egyáltalán a Translator Manager-t? Sajnos bug-os (néha elvesznek komponensek update közben, ez igaz, de szerintem jóval megkönnyíti a fordításos feladatokat). Bár ez szubjektív vélemény mint mindig.
    Mutasd a teljes hozzászólást!
  • Miért?

    Jobb egy átlátható kód írása helyett olyat csinálni, hogy egy nem látható memo-ba pakolgatod a szövegeket...
    Mutasd a teljes hozzászólást!

  • Hát nemtom... minden alkalommal előhozni egy command prompt-ot, kiadni a brcc32 parancsot, vagy használni a Delphi beépített Translator Manager-ét...
    Mutasd a teljes hozzászólást!
  • "Ezt az általam kifejlesztett módszerrel oldottam meg.
    Dobsz egy TMemo-t a formra, soronként beírod a string-eket, aztán FormCreate()-ben betöltöd a string változókba a Memo.Lines[ i ]-vel a sorokat."


    Imádom azokat az embereket, akik a bevállt módszerek helyett (pl. resourcestrings) mindig megpróbálják a spanyolviaszt feltalálni

    Mutasd a teljes hozzászólást!
  • 1.1 pre-release verzió letölthető: TRegistration 1.0.zip 967KB
    Legnagyobb változás a lokalizáció támogatása.
    Ezt az általam kifejlesztett módszerrel oldottam meg.
    Dobsz egy TMemo-t a formra, soronként beírod a string-eket, aztán FormCreate()-ben betöltöd a string változókba a Memo.Lines[ i ]-vel a sorokat.
    A Translation Manager használatával minden adott nyelvre le lehet fordítani a .dfm-eket, így teljesen automatikus a megfelelő nyelvek betöltése.
    Van egy HUN mappa is a csomagban...
    Mutasd a teljes hozzászólást!
  • Nekem működni látszik, úgyhogy levettem a béta jelzőt mellőle.
    Az 1.0-ás változat letölthető innen: TRegistration 1.0.zip 913KB
    Mutasd a teljes hozzászólást!
  • Ha jól értelmezem, akkor itt döntöd el, hogy jó-e a regisztrációs kód. Na ezt a részt - ami ugye lényeges kód - kb. 1-2 feltétel átírásával egyszerűen hatástalanítja a feltörni szándékozó ember. A legviccesebb az, hogy a függvény paraméterként kapja a lényeges változóit, ezzel is megkönnyítve a cracker dolgát debuggolásnál :)


    Igen! Ez a legviccesebb az egészben!
    Ti, én azt ajánlom, hogy teljesen szabadon működőképesek legyenek regisztráció nélkül.
    És képzeljétek el, ha mindenki az én programomat használná a saját, vagyis az én programjaim feltörésére!
    ÉS mindezt csak azért, hogy odaírd a neved, hogy ez neked már megvolt.
    Mutasd a teljes hozzászólást!
  • Letölthető a frissítés, átírtam f-re a Field-eket, és átírtam a licenszeket is. Teljesen ingyenesen használható kommerciális programokban is.

    Visszatérnék erre a kérdésre:

    Viszont szerintem nem konzekvenst a forráskód a "TRegistration.SaveSettings" eljárásodban. Itt miért nem string konstansokat használsz, amikor a többi helyen ezt már megtetted?


    Ezt, hogy érted?
    Az eljárás amiről szó van ugye:

    function TRegistration.SaveSettings(FileName: String): Boolean; var IniFile : TIniFile; begin Result := False; IniFile := TIniFile.Create(FileName); try With IniFile do begin WriteString('RegistrationInformation','Name', fRegName); WriteString('RegistrationInformation','Email', fRegEmail); WriteString('RegistrationInformation','RegistrationNumber', fRegNumber); WriteString('RegistrationInformation','VersionCode', fRegVerCode); //WriteBool('RegistrationInformation','Demo', NOT Registered); end; Result := True; finally IniFile.Free; end; end;
    Mutasd a teljes hozzászólást!
  • Most foglalkozunk egy kicsit velem is? Úgyértem be tudjátok installálni a komponenst, rádobva egy egy butt-on osra formra, működik? Lefordul? Nem fagy ki? Van valami észrevétel/módosítás/hozzáadás, amit még meg kéne tenni a végleges formája előtt az elmondottakon túl?

    Majd még átolvasom az olvasnivalót, de máris találtam egy külön véleményt, amivel nagyon nem értek egyet, és égnek áll a hajam tőle. Nálam a right margin 130-ra van állítva, jó lenne ha a Delphi nem tördelné be a sorokat automatikusan 80 karakter környékén, hanem legalább a right margin beállításomat figyelembe venné. Ugyanaz az az eset mint a honlapoknál (sajnos a prog.hu is beleesett ebbe a kategóriába), hogy a monitorom 40%-án egy nagy üresség van. Amúgy szerintem egyáltalán nem kéne betördelni arra ott a WordWrap. Tördelje mindenkinek a saját megjelenítője szerint...
    A másik amire még visszatérnék az a kiemelés, én TAB-ot használok. Miért nem menti a TAB karaktert? Akkor mindenkinek annyira kezdené be, amennyire szereti és beállította...
    Mutasd a teljes hozzászólást!
  • Jól van na, a tököt visszavonom, de! Tudtommal az eljárás nevek tartalmazhatnak számokat és aláhúzást is, vagy nem?
    Én mindkettővel egyetértek, az aláhúzás egy kicst átláthatóbbá teszi az elnevezést, a 2-es meg mutatja a fejlődést, a nyelv folyamatos változását, és még egy leütést is megspórol. Szerintem...

    Átnézem, köszönöm.
    Mutasd a teljes hozzászólást!
  • BASS_ChannelSeconds2Bytes

    Igen, ez is szörnyű. Nem elég, hogy a To-t scriptkiddie nyelven írják, de még egy aláhuzást is elhelyeztek benne.

    f mint mi

    Field

    És egy hasznos link.
    Mutasd a teljes hozzászólást!
  • Ajaj...

    //* 4 indentáció: //* Első: try //* Második try //* Harmadik try //* Negyedik... if ... end; except //* end; except //* end; finally //* end;


    4-es kiemeléssel (a gyengébbek kedvéért).
    Mutasd a teljes hozzászólást!
  • Na ne, ennyire tök nem lehetsz!

    BASS_ChannelSeconds2Bytes()
    Mutasd a teljes hozzászólást!
  • Ivn:
    A borland konvenció szerint a property-khez tartozó változókat F-el jelöljük.


    Ezt talán betarthatom. Azért írtam p-vel, mert nem jutott eszembe a megfelelő konvenció és azt gondoltam, p-vel írom, mint property vagy talán private... már nem is tudom... de kötöttem valamihez... De akkor megpróbálom megjegyezni, tehát f. De akkor miért f, f mint mi???

    Az eseményeket meg On-al kezdjük, nálad ez majdnem jó, leszámítva két eseményt.


    Úgyérted, hogy OnBefore... Én úgy választottam meg, hogy van az On, van a Before, meg van After. Ja!

    Ha használnád a Ctrl+Shift+C -t, akkor a Delphi megoldaná helyetted.

    Megpóbálom megjegyezni...

    A többit meg bhubert elmondta. Igaz, a String-et én is nagybetűvel írom.


    Nagyon helyes, akkor már ketten vagytok!

    bhubert:
    Hát akkor hatalmas gondban vagy, mert a teljes VCL ílyen konvenció alapján van megírva


    Az nekem nem okoz gondot, de ha a saját kódom kéne úgy írnom, akkor már gondot okozna...
    De akkor veletek ellentétben én többnyire a saját kódommal foglalkozom, és csak néha nézek bele a VCL forrásokba... De nem hinném, hogy ez az én dolgom lenne...

    Hasonlíts össze! Hány órát dolgozik a fejlesztő a forráskóddal, és hányat az aki megveszi...

    Ps: Általában Tahoma-t használok, de ennek több oka is van. Az egyik legfőbb problémám, hogy mivel leginkább az arab piacra fejlesztek, kellenek a unicode-os karakterek, és ezt bizony nem mindegyik tudja...


    A Tahoma az egyik kedvenc betűtipusom (a honlapom betűtipusa), de nem tudom megnézni, mert nem lehet rá átállítani a Delphi 7-est így egyszerűen (nem fixed width?).
    Mutasd a teljes hozzászólást!
  • Jujj, most nézem: SaveSettings2Registry


    SaveSettingsToRegistry
    Mutasd a teljes hozzászólást!
  • Ahogy Linus Torvalds mondaná, ha már háromnál több az indentáció, akkor már régen rossz a kód.


    vs

    Sokkal átlathatóbb, a 4-es kiemelés


    Mutasd a teljes hozzászólást!
  • Ivn: De igenis /érdekli/! Melyik része nem világos?


    A borland konvenció szerint a property-khez tartozó változókat F-el jelöljük. Nem pedig P-vel. Amikor először néztem a forrásodat, kénytelen voltam visszamenni a deklarációs részhez, hogy kiderítsem, mi a szent végtermék az a pRegRoot...
    Az eseményeket meg On-al kezdjük, nálad ez majdnem jó, leszámítva két eseményt.
    Ha használnád a Ctrl+Shift+C -t, akkor a Delphi megoldaná helyetted.

    A többit meg bhubert elmondta. Igaz, a String-et én is nagybetűvel írom.
    Mutasd a teljes hozzászólást!
  • "Nem várhatod el tőlem, hogy olyan kódot írjak, amit én sem tudok elvolasni!???"


    Hát akkor hatalmas gondban vagy, mert a teljes VCL ílyen konvenció alapján van megírva


    "Neked a kódban igazából nincs is dolgod. Ha hozzá akarsz írni, teljesen szabad kezed van!"


    Ha valóban nem lenne a fejlesztőnek dolga egy mások által megírt komponens kódjában, akkor nem igazán vennék a forráskóddal együtt szállított opciókat a kód nélkülivel szemben...

    Az elv ugyanis szép, de pl. a gyakorlatban sosem jött még be nekem. Nem találkoztam még ugyanis olyan komponenssel amiben ne kellett volna hibátkeresnem vagy valamit átírni az én szempontjaim alapján :(


    És ezen a ponton lép be a forráskód kinézete a képbe...


    Ps: Általában Tahoma-t használok, de ennek több oka is van. Az egyik legfőbb problémám, hogy mivel leginkább az arab piacra fejlesztek, kellenek a unicode-os karakterek, és ezt bizony nem mindegyik tudja...
    Mutasd a teljes hozzászólást!
  • Nem várhatod el tőlem, hogy olyan kódot írjak, amit én sem tudok elvolasni!???

    Neked a kódban igazából nincs is dolgod. Ha hozzá akarsz írni, teljesen szabad kezed van!

    Nem járt le a magányos farkasok kora ne aggódjál!

    Frissítettem a csomagot, ha minden igaz, most már nem generál ugyanolyan regisztrációs számot, két különböző regisztráció alapján, bár a regisztrációs szám, mindig különbözik, mert az első 6 számjegye a sorszám, szóval...

    De hadd kérdezzek valamit! Milyen font-ot használsz? Én Fixedsys-t!?
    Mutasd a teljes hozzászólást!
  • Az egy ügy, hogy minden formai szokásodat meg tudod magyarázni. Más kérdés, hogy jobb-e az árral szemben evezni, mint sodródni vele...


    A bevett formai és szakmai konveciók pont azért vannak, hogy mások munkáját megkönnyítsük. A magányos farkasok kora ugyanis már lejárt ebben a szakmában...
    Mutasd a teljes hozzászólást!
  • Nem akarom megnehezíteni a crack-er dolgát, sőt, szerintem van elég baja amúgy is...
    De szívesen hallgatom, hogy hogy lehetne növelni a védelmet!

    - "String" -> "string", mivel fenntartot szó


    Én rosszul vagyok, ha rénázek a kicsire, de pl. azt meg én utálom, amikor változókat teljesen kicsivel írnak, meg értelmetlen neveket adnak nekik.

    - "NOT" -> "not", ugyanez az OR-al és az AND-el


    Erre azt találtam ki, hogy feltünjönek a logikai műveletek.

    - Nagy általánosságban elfogadott szokás, hogy 2 karakterrel emelünk ki. Nálad vagy 4-5 van vagy 0 :)


    Na ez az ami nekem személy szerint nagyon nem teccik! Ahogy Linus Torvalds mondaná, ha már háromnál több az indentáció, akkor már régen rossz a kód. Sokkal átlathatóbb, a 4-es kiemelés, főleg 1280x1024-es felbontásban.
    Mutasd a teljes hozzászólást!
  • "Meg akkor egyetlen egy DLL cseréjével bárki jól kiiktathatja az egész regisztrációs procedurát. Bár a fenti kapitális tervezési hibák mellett ez már amúgy sem számít sokat... "


    Igen :)


    Egy régi hardverkulccsal pont ezt csináltam anno. Kapott egy új DLL-t, ami naplózta a beírt/kiírt értékeket majd meghívta az eredeti DLL függvényeit. Kb. 1 óra volt megírni és így feltörni a kulcsot. Tipikus probléma ez: mit sem ér a jól tervezett erős hardveres titkosítás a kulcsban, ha az szoftveresen egyszerűen megkerülhető.
    Mutasd a teljes hozzászólást!
  • "Ivn: De igenis /érdekli/! Melyik része nem világos?"


    pl:

    - "String" -> "string", mivel fenntartot szó

    - "NOT" -> "not", ugyanez az OR-al és az AND-el

    - Nagy általánosságban elfogadott szokás, hogy 2 karakterrel emelünk ki. Nálad vagy 4-5 van vagy 0 :)


    De a legzavaróbbnak továbbra is az if-then-begin részeidet tartom.


    Ezeket a dolgokat lehet nem szeretni és nem betartani, de nem éri meg! Onnantól kezdve, ha más is akarja használni a kódodat, akkor ezek a standardok igencsak megkönnyítik a munkát.



    Mellesleg ezektől a formai problémáktól eltekintve látok egy sokkal komolyabb szakmai problémát:


    function CheckReg(Name, Email, RegNum, VerCode: String; RegRandomSeed, VerRandomSeed: Extended): Boolean; begin Result := False; try if IntToStr(CalcRegNum(Name, Email, RegRandomSeed)) = Copy(RegNum, 7, 6) then begin if IntToStr(CalcVerCode(StrToInt64(RegNum), VerRandomSeed)) = VerCode then Result := True; end; except Result := False; end; end;


    Ha jól értelmezem, akkor itt döntöd el, hogy jó-e a regisztrációs kód. Na ezt a részt - ami ugye lényeges kód - kb. 1-2 feltétel átírásával egyszerűen hatástalanítja a feltörni szándékozó ember. A legviccesebb az, hogy a függvény paraméterként kapja a lényeges változóit, ezzel is megkönnyítve
    a cracker dolgát debuggolásnál :)
    Mutasd a teljes hozzászólást!
  • Kösz, megnézem!

    Találtam viszont egy bug-ot.
    1.Registration Tool megnyitása Delphi 7-ben
    2.CTRL+klikk a Uses: RegistrationPass-ra, aztán a Uses: RegForm-ra.
    3.Kilépés a Delphiből és elszáll a Delphi, ha a RegForm.pas be van töltve...
    Először azt hittem a Destructor hiánya, hozzáadtam, hogy:

    public Destructor Destroy; override; Constructor TFormReg.Create(AOwner: TComponent); begin rAOwner := AOwner; inherited Create(AOwner); end; Destructor TFormReg.Destroy; begin rAOwner := nil; inherited Destroy; end;

    De így is. Nincs ötletem...
    Mutasd a teljes hozzászólást!
  • hi!

    Na és, hogy lehetne javítani a védelmen?

    Azt az egyetlen xor-t csereld ki (a and not b or b and not a)-ra.
    Mondjuk ezzel is csak idot lehet nyerni :]]]]
    Mutasd a teljes hozzászólást!
  • ...bár nekem furcsa az új sorban elhelyezett "then" és az azonos sorban elhelyezett "begin" formátuma. Pont fordítva szokás ugyanis, bár ez valóban csak kötözkötés :)


    Azért szoktám át rá, mert nekem átláthatóbb így, hogy hol a feltétel sora, hogy pontosabban látom, mi történik belül.

    De a lényegi észrevételem: belenéztem a single commercial licence árába, és bizony elég soknak találom az 500 euro-s összeget!


    Ja ja, ezt a részét hagytam utoljára, levettem egyenlőre €100-ra. Úgyértem mennyit adnátok, ha teszem azt, szükségetek lenne egy ilyen kompira, és azt mondanád: "
    Áááá inkább kifeztek €100 és megspórolok magamnak egy heti munkát, és a /folyamatos/ update-eket?
    "

    Ivn: De igenis /érdekli/! Melyik része nem világos?

    Sting: Ja igen, én is utálom az olyan programokat, amiket fel kell törnöm, hogy használhassam.
    Ha usernek megéri elmenni crack-et keresni, ahelyett, hogy pár klikkel elintézni a regisztrációt, akkor csinálja meg.
    Na és, hogy lehetne javítani a védelmen?

    Emiatt gondolom, hogy érdemes lenne ezt az 500 eurót ismételten átgondolni!
    Ehh, nem érted te ezt! 3delite csak azt szeretné, hogy "az embereknek jobb legyen", és nem szeretné, hogy bárkinek is le kelljen mondani az ő szoftveréről csak azért, mert "ő nem tud fizetni de szeretné azt a dolgot". Ezért is határozta el alig pár hete, hogy a jövőben ő aztán minden programját GPL licenc alatt adja majd ki...


    Nem értem a problémádat.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd