Hirdetés
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- bambano: Bambanő háza tája
- sziku69: Fűzzük össze a szavakat :)
- Sonarr és Radarr
- eBay-es kütyük kis pénzért
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- weiss: Logi MX Master 3S FW NEM frissítés
- Geri Bátyó: Agglegénykonyha 2 – Főzés: szabályok, vagy szabadság?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Új hozzászólás Aktív témák
-
czappa
aktív tag
Sziasztok!
Már megint elakadtam, most a mutatókkal gyűlt meg a bajom.
Suliban volt szó egyirányú listákról; ehhez írtam egy kis progit, ami még csak annyit csinál, hogy lehet a végéhez felvenni egy új elemet és az egészet listázni (kiíratni egy listboxba).
Ez szép és jó és elvileg működik is ([link]), ám én balga arra gondoltam, hogy nem recorddal kéne megcsinálni hanem osztály példányokkal ha már úgyis oop-t tanulok.
Itt azonban már nem mentek olyan simán a dolgok. Ha csak egy elemet veszek fel a listába, akkor minden működik rendesen, azonban több elemnél a kilistázáskor a progi bekerül egy végtelen ciklusba és már két napja ezen rágódok és nem tudok rájönni sehogy se; ennek itt a linkje:
[link]
Azért bemásolok ide kódrészeket:
private
fej, p: point;
uj: TRek;
ujertek: integer; (...)
procedure TForm1.Button1Click(Sender: TObject);
begin
//beszúrás a lista végéhez
ujertek:=StrToInt(Edit1.Text);
Edit1.Text:='';
uj:=TRek.Create(ujertek);
uj.setKov(nil);
if fej=nil then //ha nincs még eleme a listának
begin
fej:=@uj;
end
else //ha a fej nem nil-re mutat, azaz ha van már eleme a listának
begin
p:=fej;
while p.getKov<>nil do
begin
p:=p^.getKov;
end;
p^.setKov(@uj);
end;
Edit1.SetFocus;
end;
procedure TForm1.ListazClick(Sender: TObject);
var i: integer; //
begin
for i:=ListBox1.Count downto 0 do //a LsitBox1 elemeinek törlése
ListBox1.Items.Delete(i);
p:=fej;
while p<>nil do
begin
Listbox1.Items.Add( IntToStr(p^.getTart) );
p:=p^.getKov;
end;
end;
és a TRek osztály:
unit Rek;
interface
type
point = ^TRek;
TRek=class
private
tart : Integer ;
kov : point;
public
constructor create(tart: integer);
procedure setKov(kov: point);
function getKov: point;
function getTart: integer;
end;
Végülis a lényegi részeket fentebb kimásoltam.
[Szerkesztve]
[Szerkesztve]
Új hozzászólás Aktív témák
- Lenovo Thinkpad Intel I7 - 32GB DDR4 - SSD 1TB - NVidia 4GB DDR6 - 4K LCD - Carbon Fiber/Magnesium
- Metabo PowerMaxx 12V akkus gépek és szettek 2/2
- Metabo PowerMaxx 12V akkus gépek és szettek 1/2
- Eladó ZTE MC888A 5G + router LTE Sim kártyás
- Dell Latitude 5450 14" FHD IPS ULTRA 5 135U vPRO 12 Mag 16GB RAM 512GB NVME SSD 2028-ig Gar
- LG 65NANO81T3A 165 cm / 65 4K UHD NanoCell Smart TV 6 hó garancia Házhozszállítás
- LEGJOBB KIJELZŐS! 400NIT ThinkPad T14s Gen 2 i5-1135G7 16GB 256GB FHD 1 év garancia
- BESZÁMÍTÁS! MSI B450 R5 5500 16GB DDR4 512GB SSD 1TB HDD GTX 1060 6GB Zalman N5 MF ADATA 600W
- GYÁRI TÖLTŐK DELL LENOVO HP FUJITSU TOSHIBA Macbook---------- Budapest,/MPL/Foxpost
- HP ZBook Studio G7 i7-10850H 32GB 512GB Nvidia Quadro T1000 15.6" FHD 1 év garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest