Új hozzászólás Aktív témák
-
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. -
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
válasz #57764352 #111 üzenetére
LNKO és relatív prím algoritmus:
pl. Bővebben: link
vagy: Bővebben: link
[Szerkesztve] -
zenit
tag
A Form az nem egy statikus kép, hogy egyszer kirajzolódik a Show hatására, és aztán úgy marad.
A tényleges rajzolás általában a Windows WM_PAINT esemény hatására történik, ami mindannyiszor meghívódik, ha pl. megváltozik az ablak tartalma (Invalidate) - vagy egyszerűen csak egy másik ablakot elhúzol felette! stb...
Delphi oldalon ezt a mechanizmust az OnPaint eseményben tudod elcsípni, ami mindannyiszor meghívódik, ha a formot újra kell rajzolni. Itt rajzolhatsz pl. hátteret a Formodnak. Használd a TForm.Canvas-t. -
-
zenit
tag
válasz Drótszamár #454 üzenetére
A Parent property-t is be kell állítani a szülőre (a Create csak a tulajdonost állítja).
Elképzelhető, hogy a korábban létrehozott kép takarja az újat (de nem biztos!), ekkor használd a BringToFront eljárást.
Szerk: A Create-nek csak akkor adj meg paramétert, ha azt akarod, hogy a tulajdonosa szabadítsa fel, amikor majd ő is felszabadul. Én jobb szeretem az általam létrehozott objektumokat magam felszabadítani, így ekkor elég egy nil-t megadni.
[Szerkesztve] -
zenit
tag
válasz Drótszamár #456 üzenetére
Bocs, kicsit félreérthető voltam:
úgy értettem, hogy ilyenkor egy nil-t kell átadni neki paraméternek.