Pascalban az in-t lehet tömbváltozókra is használni?
úgy értem hogy ugye van amit az iskolában is tanítanak:
if 1 in [1,2,3,4,5] ......
ezt lehetne valahogy úgy alkalmazni, hogy:
var tomb: array of byte;
x: byte;
if x in tomb then // azaz ha az x-nek megfelelo ertek helyet foglal a tomb-ben
illetve ha lehet akkor hogyan kell, mert így ebben a formában "operator not overloaded".
Én nem tudok róla. Collection nevű unit (osztály?) azt hiszem létezik, de az már jóval több egy sima tömbnél, az nem lesz jó neked. Egyszerűbb, ha megírod (vagy keresel neten), és utána elteszed későbbre.
Az in operátor is azért létezik a halmazoknál, mert a halmaz tárolási módja el van fedve, és nem igazán segíti a benne való keresést. De a tömb szabadon kezelhető, egyszerűen írható bármilyen kereső algoritmus hozzá.
Ehhez egyszerűbbnek tűnik végigmenni a tömbelemeken egy egyenlőségvizsgálattal, szerintem az in is valami hasonlót csinál, és nincs kizárva, hogy lassabban. Ha gyorsítani akarsz rajta, írd meg assembly-betétként, az egyszerű szerkezetű tömbre nyilván nem ördöngösség. Így kikerülheted a pascal terjengősebb bolondbiztos megoldásait. De pár ezer ellenőrzés tiszta pascalban sem tétel a fájlok lekérdezésének idejéhez képest.
Mellesleg az nem megoldás, hogy a meglévő fájlokkal egyáltalán nem foglalkozol, hanem csak mondjuk a hiányzók sorszámát jegyzed föl a keresés alatt? Ez egybájtosnál nagyobb bejegyzéseket igényelne ugyan, viszont a bejegyzések száma sokkal kevesebb volna (optimális esetben semennyi), és azt, hogy *egyáltalán* volt-e probléma, azonnal meg tudod állapítani abból, hogy üres-e az első bejegyzés. Hogy magukat a bejegyzéseket milyen formában tárolod, a te dolgod, én talán stringet használnék, de a közvetlensége miatt gyorsabb egy integer-tömb. A feladat mélyebb ismeretében biztosan lehetne ennél okosabbakat is javasolni.
azért kell eltárolni, mert majd ki akarom iratni, hogy mi volt a problem, mert mivel ez egy gui app semmi lehetôséget nem tudok a hiba kiiratására, csak ha betôlt valami, ami kiirja, azt meg csak a végén kell ugyebár :D csak az a gond, hogy annak a dolgai is fileban vannak, de ezt majd megoldom. a lényeg, hogy el kell tárolni, és gyorsan kikeresni a pár if pedig:
uses sysutils, ...
var fileok:array[1..n] of boolean;
fileok[n]:=FileExist(valami.cfg);
if fileok[1] AND fileok[2] AND fileok[n] .....
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!