Kezdőoldal » Számítástechnika » Programozás » FPC/Lazarus-ban random SIGSEGV...

FPC/Lazarus-ban random SIGSEGV errorokat kapok a class-jaimra. Pedig jól néznek ki a Complier se szól, csak amikor futnia kéne akkor meghal. Mi lehet a probléma?

Figyelt kérdés

példának okáért itt is van egy egszerűbb:


type Tsettings=class

values:array of array[0..2] of string;

loaded:boolean;

function get(mit:string):string;

function isSet(mit:string):boolean;

constructor load(filepath:string);

end;


function Tsettings.get(mit:string):string;

var i: word;

fund:boolean;

begin

if loaded then

begin

i:=low(values);

fund:=false;

Repeat

if Upcase(values[i,1]) = Upcase(mit) then fund:=True

else inc(i);

until fund or (i = High(values));


if fund then get:=values[i,2]

else get:='Error: 1';

end else get:='Error: 2';

end;


ha futnia kéne meghal, az "if loaded then" soron, ha kiveszem akkor pedig az "if Upcase(values[i,1]) = Upcase(mit) then fund:=True" soron


de itt egy másik is:


type

particles=class

may,miy:single;

pos:TVector3f; // ez egy típus amiben van egy x egy y és egy z ami single

speed:single;

constructor createfalling(py,ly,pspeed:single);

procedure update;

procedure render;

end;



procedure particles.update;

begin


if pos.y < miy then

begin

pos.x:=Random(512)-256;

pos.z:=Random(512)-256;

pos.y:=may;

end else begin

pos.y:=pos.y-speed;

end;


end;


itt pedig az "if pos.y < miy then" soron hal be.


úgy néz ki mintha az if-eken halna be, de más classok is vannak if-ekkel, és azok mennek, a másik meg hogy a class belső változóitól, de ugyanúgy, mások mennek vele.


a SIGSEGVről ezt találtam:


SIGSEGV = Segmentation Fault = Access Violation under Win


Common causes are;


-> miscalculating array ranges in your loops,

-> accessing objects when not created,

-> or just plain and simple trying to access memory that was not allocated for use.


nincs valakinek bármi építő ötlete, mert ez egy nagyon bosszantó error, amivel nem tudok mit kezdeni :(



2013. jún. 29. 15:11
1 2
 11/11 A kérdező kommentje:

Igen, de itt ebben a progiban, éppen az a lényeg, hogy olyan adatokkal tudjon dolgozni, amiket ő sem tud előre, és nincs beleprogramozva. Most tudok egy konkrétebb példát is hozni:


egy script tartalma, ami ha kell lefut:


- loadsettings xy.cfg xy (töltsük be az xy.cfg-t és adjuk neki az xy nevet (kivétel a settings.cfg az magától betöltődik) ) (ilyenkor az array of Tsettings eggyel növekszik)


- setlight xy.x xy.y xy.z xy.w (álítsunk be egy lámpát az xy-ban meghatározottak szerint)

de akár lehetne ez is:


- setlight xy.janibácsi xy.gjaogadgianda xy.nemY xy.tavolsag (ilyenkor ugye a .cfg-ben is ezek vannak (janibácsi=123) )


persze ez is csak egy példa, a script-be nyilván beleírják eleve az adatokat, de például a menüben nem tudni, hogy ki mit akar belerakni, és ott viszont ezekből a filek-ból kell meghatározni


ugyan azok az adatok, mint az előzőben csak más a nevük, azért, hogy több is lehessen belőle, annyi amennyire szüksége van a felhasználónak, és úgy határozza meg, ahogy az neki kényelmesé.

ezért kell a nevét is az értéknek string ként tárolni, és az alapján kikeresni. persze, ahogy nézem, ezt az ini-s cuccot, amit te írtál, át lehetne írni úgy hogy így legyen, meg is próbálom majd :) és köszönöm még egyszer :)

2013. júl. 1. 18:35
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!