Kezdőoldal » Számítástechnika » Programozás » Pascal: E kód módosítása...

Pascal: E kód módosítása fájlbaírás/mellékletkeresésre? (bővebben lent)

Figyelt kérdés

Itt egy kód, amellyel azt szeretném megoldani, hogy egy nagy fájlon (mbox formátum) menjen végig, olvassa be soronként és ha mellékletet talál, tegye ki a mellékleteket fájlba, de már létező fájl esetén nevezze át: pl. melléklet(1) névre, vagy ha már ilyen is van akkor melléklet(2) névre hogy ne íródjon felül.

Az összes melléklet kinyerésére szeretném használni.

Ha nem OOP-megvalósítás lenne e kód, akkor meg tudnám oldani a dolgot, de a Pascal OOP-dialektusához nem igazán tudok hozzászólni.

Itt a kód:

[link]



2021. jún. 19. 15:33
 1/9 anonim ***** válasza:
12%

A pascal az pont nem OOP nyelv.

Az Object pascal sem tisztán OOP hanem multiparadigmás.

Tehát, OP-vel, FP-vel simán meg tudod oldani a feladatot, feltéve ha igaz, amit magadról állítasz.


Megnézem a forrás mellékletet. Neked tényleg volt pofád más kódját felmásolni a haste.bin-re?

2021. jún. 19. 19:24
Hasznos számodra ez a válasz?
 2/9 A kérdező kommentje:

Ez a Pascal OOP dialektusa, én eddig mindig mindent csak a "nem oop dialektusban" oldottam meg, $mode objfpc kapcsoló nélkül.

Igen, volt pofám a Free Pascal telepítésekor automatikusan települő kódot felmásolni oda.

C:\FPC\3.2.0\examples\fcl-base\b64dec.pp

Ide települt automatikusan, az fpc telepítésekor.

Problémát nem láttam benne egy pillanatig se, ha felmásolom.

A stílust nem igazán értem.

2021. jún. 19. 19:46
 3/9 A kérdező kommentje:
License szerint helyesen jártam el - kompletten az egész kód, ott van: ki írta, nem a sajátomként állítottam be és ráadásul minden Free Pascal telepítés része, ha valaki a példaprogramokat is telepíti.
2021. jún. 20. 02:14
 4/9 anonim ***** válasza:

Vagy keresned kell egy mbox kezelő unitot és azt használnod vagy tanulmányoznod az mbox fájlformátum leírását.

Amit bemásoltál, azt nem "módosítani" kell, hanem megírni az egészet.

2021. jún. 20. 08:45
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:

Köszönöm a hozzászólást.

A módosítást úgy értelmeztem, hogy ne standard input-ról olvasson és ne standard output-ra írjon, e probléma kiküszöbölése után már nagy valószínűséggel meg tudom írni az egészet. Részben már meg is oldottam.

Mondjuk, ezt nem fejtettem ki, hogy ilyesféle módosításra gondolok és nem egyfajta "kódot írják meg helyettem" típusúra, nem volt szándékomban "valakivel megíratni az egészet".

Sok éven keresztül az assign (újabban "assignfile"), reset, rewrite, read/write, blockread/blockwrite, seek, filepos stb parancsokkal mindent meg tudtam oldani, ebben az "oop dialektusban" kissé gondba kerültem fájlkezelés terén.

Bevallom a mbox formátumnak se néztem még utána, mert úgy voltam vele: csak a mellékletek kellenek, text fájlon olvasással végig kell menni és figyelni azokat a sorokat, melyek a melléklet elejét jelzik és így értelemszerűen ezután jön a kódolt szöveg, valamint a melléklet végét jelző sorra is figyelni kell az olvasás során. Feltételezem, hogy ezek szabványosak és minden levelezőprogram így jelzi a melléklet elejét-végét.

Bár más programozási nyelv, de:

Találtam egy ilyen megoldást is, csak azt nem tudom, hogy azonos nevű fájlokra is figyel -e, valamint "természetesen" használ olyan komponenst, amely miatt nálam nem fut le:

[link]

2021. jún. 20. 10:57
 6/9 anonim ***** válasza:
12%

Attól, hogy a freepascal "mellé" települ kód, még nem lesz a tulajdonod. A freepascalnak is, és a mellette lévő programoknak is van licensze. Eleve, egy olyan kódot, amihez semmi közöd, nem hozhatsz nyilvánoságra, nem oszthatsz meg, csak úgy, ha a rá vonatkozó licenszet mellékeled, hogy akihez eljut, az is tudja, hogy mit kezdhet vele.

Ez ugyanúgy érvényes a harminc, mint a harmincezer soros forráskódra is.


Az assign metódusnak az OP-beli változata az assignfile, mivel az assign érvényességi körét kiterjesztették objektumokra, egyebekre is.


A read/write, blockread/blockwrite, seek, stb. metódusok ugyanúgy elérhetőek freepascalban is, mint a standard pascalban, vagy a turbóban.


Ez, amit neked kell csinálnod, egészen triviális.

Egy file-t kell megnyitni olvasásra és a readln metódussal soronként feldolgozni, majd a munka eredményét egy másik file-ba kiírni.

2021. jún. 20. 12:30
Hasznos számodra ez a válasz?
 7/9 A kérdező kommentje:

GPL és LGPL licenc alatt van a telepítő csomag, amely a kérdéses kódot tartalmazta. Szerintem biztos van még jópár ember által írt kód az examples alatt -> kódot nyilvánosságra hozták a telepítőcsomagban...

Nézd csak, mennyi kód van itt is a múltból, sok embertől, egy önkéntes, lelkes közösség által létrehozva:

[link]

A Linux közösség is elég hatalmas nagy bajban lenne, ha "nem a tulajdonom a kód, nem hozhatom nyilvánosságra hiába a GPL" jegyében, senki se fejlesztene semmit, nem nyúlna hozzá más kódjához, nem lennének csomagok, sem csomagokat karbantartók stb.


Free Pascal esetén használtam az előző kommentemben írt eljárásokat (nem más Pascal-ban), én arra utaltam, hogy az oop dialektusában ezek nem érhetőek el, más megközelítés szükséges.


Így van, ezt kell tenni, amit leírtál, én is így szándékozom megírni, valamint figyelni, hogy a melléklet mivel kezdődik:

Content-Type: text/plain;

name="=?iso-8859-2?Q? ...

Ekkor csak Latin2 -> UTF8 kódolás szükséges a sorokon.


vagy


Content-Type: application/octet-stream; name=proba

Content-Disposition: attachment; filename=proba

Content-Transfer-Encoding: base64

X-Attachment-Id: file0

Ekkor szükséges a base64.


Persze még biztos vannak egyéb, "multipart/mixed", "multipart/alternative", "multipart/inline és egyebek, amelyekre figyelni kell, illetve az ezt definiáló RFC-vel megismerkedni (2045 és 2046 ha jól gondolom).

2021. jún. 20. 13:13
 8/9 anonim ***** válasza:
9%

Az általad adott linken is ott a copyright szöveg és úgy mellesleg, attól, hogy valaki vagy valakik jogellenesen elérhetővé tesznek kódokat, vagy ezek részleteit, neked még nem lesz arra jogosultságod, hogy majmold őket.


Sajnos te olyan sötét vagy, mint a négersegg éjfélkor.

A linux közösség és a freepascal fejlesztői közössége sem azt mondja, hogy neked jogod van más kódját bárhova odapakolni, hanem azt, hogy ha van egyáltalán erre jogosultságod, akkor a licenszet mellékelni kell, mint a kód szerves részét.


Tudod, ezek az emberek nem azért dolgoznak, nagyon sok esetben ingyen, hogy jöjjön a személyedben egy kétszázhetvenharmadik svábbogár is, aki jogsértést követ el a sérelmükre.


Ahhoz mit szólnál, ha én a te arcképedet valamelyik kaki-pisi szex oldalra pakolnám fel? Tetszene?

2021. jún. 20. 14:35
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:

Utolsó válaszadó részére, aki többek közt "Sajnos te olyan sötét vagy" és ehhez hasonlóan dehonesztálóan szólt hozzá:

Bizonyos szint alá nem megyek, mert nem érdemes.

Emlékeztetsz egy múltbeli, iskolai számítástechnika tanáromra, aki nagy melldöngetéssel mondogatott ilyeneket, kezdve a hangkazetta másoláson át a "nincsenek ingyenes programok" állításig mindent felhozva.

Az persze nem zavarta, sőt azzal mindig dicsekedett, hogy a suli kontójára milyen frankó szolgáltatásokat "tud igénybe venni", amihez senki másnak nem volt joga.

Az ilyen emberek a legritkábban viselkednek erkölcsi dörgedelmeiknek, tanaiknak megfelelően.


Hozzád ez az utolsó válaszom.

2021. jún. 21. 04:35

További 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!