Lazarus 3.0 (2023.12.21.)
Letöltés

  • Oldal:
  • 1

TÉMA:

ptcgraph de hogyan? 2020 jún. 07 17:35 #2390

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Légy szíves és az SDL gondjaid számára nyiss új témát, ez a már így is eléggé szét van esve (rég nem az a téma ami a címben szerepel).

"Egy témán belül (topic) lehetőleg ne keverj több eltérő tárgykörbe tartozó kérdést! Egy témáknak nem valakiről, hanem egy megoldandó és jól meghatározott problémáról kell szólni... A fórumot használata... "
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

ptcgraph de hogyan? 2020 jún. 07 17:08 #2389

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0

ptcgraph de hogyan? 2020 jún. 07 16:56 #2388

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Értem, hogy miért használja a surface és a texture felületeket.
Anno a memóriába építettük fel a képet és move -al mozgattuk át a grafikus memóriába, bank lapozással együtt 64 vagy 128 K (1 v. 2) szegmensekként, amit tudott a grafikus kártya. Világos.

De ha közvetlenül a megjelenő felületre szeretnék írni az lehetséges?

Egy RecTangle nem állhat 7 soros programból.... Az azért nem életszerű.

ptcgraph de hogyan? 2020 jún. 02 20:05 #2387

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Ez.... lenyűgöző! Ezt kerestem! Brutál mire képes!
Na most elleszek egy jó darabig... :-) Köszönöm szépen!

ptcgraph de hogyan? 2020 jún. 02 16:23 #2386

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Ha ezzel kezdted volna, sok időt megspóroltál volna.

... szükségem van grafikus felületre, amire tudok primitíveket rajzolni (pont, vonal stb.), kép részletet menteni és visszatölteni, ékezetes betűkkel írni (ttf fontokkal), jpg vagy png képet megjeleníteni és ugyan így lementeni is.

A Free Pascal telepítésekor felkerül a "Packages" könyvtárba az SDL (Simple Directmedia Layer) használatához szükséges unit-ok gyűjteménye is, melyeket a megfelelő .dll és .so bináris állományok jelenlétében a programodat Linux és Windows rendszeren is elkészítheted és/vagy használhatod.
Rövid infó a wiki-n: FPC and SDL (wiki)
Tananyagok és bemutatók itt: Free Pascal meets SDL
További infók és példák: internet
Néhány unit és hogy mit tud:
  • sdl.pas - alap grafikai és eszközkezelési (képernyő, hang, időzítő, egér stb.) eljárások/függvények
  • sdl_gfx.pas - bővített grafikai eljárások (vonal, kör, poligon stb)
  • sdl_image.pas - képek kezelése
  • sdl_mixer.pas - hangok keverése
  • sdl_net.pas - hálózati műveletek
  • sdl_ttf.pas - TrueType műveletek

A használatukhoz Linux-on szükség van néhány, az SDL-hez tartozó csomagra és fejlesztői csomagra. A fejlesztői (dev) csomagok hiányában a fordító hibát jelez. Ilyenkor alaposan nézd át a hibaüzeneteket és telepítsd a hiányzó csomago(ka)t.

Én a Synaptic csomagkezelőt használom. Ha nincs fenn a gépeden, de szeretnéd feltenni akkor a terminálban a következő parancsot kell kiadnod: "sudo apt-get install synaptic apt-xapian-index"
(Az apt-xapian-index csomaggal egy helyes keresőmezőt is kapsz a synaptic eszköztárára.)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 jún. 02 09:15 #2385

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Az a gondom, hogy az fcl image a memóriába dolgozik de én szeretném látni a képet. Mit kell átírni, hozzáírni az alábbi programhoz, hogy lássak is valamit? Valami OpenGL -t olvastam, de nem tudom konkrétan hogy kell használni.

{$mode objfpc}{$h+}
uses classes, sysutils,
FPImage, FPCanvas, FPImgCanv;

var canvas : TFPcustomCanvas;
image : TFPCustomImage;

begin
image := TFPMemoryImage.Create (100,100);
Canvas := TFPImageCanvas.Create (image);

canvas.Ellipse (10,10, 90,90);

Canvas.Free;
image.Free;
end.

Összefoglalva. Visszatérnék a pascal-ra.
Ehhez szükségem van grafikus felületre, amire tudok primitíveket rajzolni (pont, vonal stb.), kép részletet menteni és visszatölteni, ékezetes betűkkel írni (ttf fontokkal), jpg vagy png képet megjeleníteni és ugyan így lementeni is. Szerintem ez nem túl nagy elvárás. Mindezt konzolos fp -ben Linux alatt. Ha elkerülhetetlen csak akkor OOP-ben.
Amint van egy ezt tudó demo programom, a többi már menni fog. De amíg nem látom az eszközrendszeremet addig nem tudok / merek belefogni a komolyabb projektjeimbe. Ezért most térképezem a lehetőségeket.

Kérlek valaki mutasson egy kis lámpást a sötétben... Köszönöm!

ptcgraph de hogyan? 2020 máj. 27 18:19 #2380

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
De jó. Ezzel tudok ttf fontokkal írni: wiki.freepascal.org/fcl-image
Csakhogy nem a képernyőre... de szépen menti png -be.
Sebaj, nyitottam egy grafikus képernyőt a ptcgraph InitGraph -jával. De akkor már nem is futott le a fenti ttf-el író mintaprogram.
Pedig de jó lenne chr helyett ttf-el írni a grafikus képernyőre...

Valami jó ref. kézikönyv kellene. Például a units.pdf -ben meg sincs említve az FPimage vagy az ftfont Unit. Akkor honnan tudjam a használatát? Anno volt a tubopascal 5.5 könyv oszt minden benne volt... Most meg sötétben tapogatózom és vaktában próbálkozom mi működik, mi nem...

ptcgraph de hogyan? 2020 máj. 25 17:31 #2374

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Letettem a Lasarus IDE-ről. Jó lesz nekem az fpc. 20 évig jó volt, jó lesz most is.... :-)

Esetleg valaki tud konzolos ptcgraph -ra épülő jó kis kiegészítő unit-ról?
Ilyesmi érdekelne, hogy jpg kép megjelenítése. Esetleg grafikus elemek, mint gomb, textbox, menü, lista stb. megvalósítása.
Köszönöm!

ptcgraph de hogyan? 2020 máj. 16 17:04 #2370

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Megpróbáltam mindet. Ugyan az a hiba:
"A hibakereső nem tud töréspontot beállítani az alkalmazás belépési pontjára.
Ezt hiányzó hibakeresési infók okozhatják."

Az az elszomorító, hogy teljesen újonnan synaptic-al telepített Lasarus, első indítás, Új egyszerű program,
Ebbe egy "Hello world" és amint beállítom hogy a terminálra menjen azonnal a fenti hibát okozza. EZ azért durva.
Gondolom csak kipróbálták a fejlesztők mielőtt kaiadták?!

ptcgraph de hogyan? 2020 máj. 13 16:06 #2369

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Ebben az esetben ("No symbol "main" in current context.") próbáld meg a következőt, bár a hibakeresés a terminálban sajnos nem fog működni:
  1. A menüben válaszd az "Eszközök / Beállítások" elemet
  2. A megjelenő ablak oldalsávjában válaszd a fa "Hibakereső / Hibakereső háttérprogram" ágát
  3. A megjelenő lapon, a táblázatban az következőket érdemes tesztelni (először egyszerre csak egyet)
    • az "InternalStackBreak" értékét állítsd pl. erre: "gdbsNone" vagy "gdbsAddZero"
    • a "DisableLoadSymbolsForLibraries" lehetőségeket állítsd True-ra (így aktiválható a tiltás)
    • a "DisableForceBreakpoint" lehetőségeket állítsd True-ra (így aktiválható a tiltás)
Továbbá azt is meg lehet nézni hogy a "Futtatás / Futtatási paraméterek" megnyitásakor a "Helyi" lapon a "Külső alkalmazás" meg van-e adva. Az is lehet a baj ha meg van adva, de nem jó állományra mutat. Érdemes üresen hagyva megpróbálni a futtatást.
(Egyszerre csak egy dolgot változtass, ha nem segített állítsd vissza és csak utána próbáld a következőt.)

Egy másik lehetőség, hogy futtatás előtt megnyitod a menüből a "Nézet / Hibakereső ablakok / Konzol be- és kimenete" ablakot, melyben a terminálban elvileg megjelenő nyers(!) adatokat láthatod. Ez esetben működik a megállás a töréspontoknál az F7 "Belépni" és az F8 "Átlépni" lehetőség is, de fontos szem előtt tartani, hogy ebben az ablakban nem a terminált látod hanem a nyers(!) be- és kimeneti adatokat.
Ha ez akarod használni akkor a futtatási paramétereknél ne legyen bekapcsolva a "Futtató alkalmazás használata" lehetőség, de a parancssori paramétereket ekkor is ott kell megadni.

Sajnos a Lazarus (Linux és Mac) változataiba jelenleg nincs beépítve a parancssori alkalmazások hibakeresésének lehetősége.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 máj. 12 19:55 #2368

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Még nem tudok dönteni a Geany és a Lasarus között. A gdb elég macerásnak tűnik, hátha a Lasarus tud úgy debugolni mint anno a BP az F7, F8 kényelmével..?!

Ó igen, tévedtem. A .o csak object file. Megzavart, hogy kiterjesztés nélküli futtatható állomány nyomát sem láttam a Lasarus fordítása után, mint az fp -nél. Majd tovább keresem, csak oda rejtette azt valahova.

A terminált sem tudtam , hogy be kell állítani. Honnan is tudhattam volna?! CodeBlocks, Netbeans, VSCode, VisualStudio stb. használata során nem kellett ilyesmit beállítani, ment magától. De semmi gond, tanulok gyorsan. :-)

A Lasarusban beállítottam a terminált, de ezt írja ki a Hello Word -re:
Hibakereső hiba:
Ez a GDB parancs:
"info address main"
a következő hibát eredményezte:
",msg="No symbol \"main\" in current context.""

Szeretek magamtól rájönni a dolgokra, de most annyira elveszett vagyok.

ptcgraph de hogyan? 2020 máj. 12 18:45 #2367

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Habár a geany-hez már létezik egy debugger bővítmény ez azonban nem érhető el minden disztribúcióban (talán még mindig instabil, nem tudom).

Minden esetre én már régóta a gdb-t használom hibakeresésre (ha muszáj). Ez azonban egy parancssoros alkalmazás (a geany bővítménye is ezt futtatja a háttérben), ezért meg kell ismerni a használatát (lásd majd lentebb).
A geany-ből történő használatához a következőket kell tenni:
  • Menüben az "Összeállítás / Build parancsok megadása" menüpontra kattintva megjelenik egy ablak
  • Az megjelenő ablakban a "Futtatási parancsok" közé (alul) felvenni a következő parancsot (esetleges paraméterekkel)t: gdb --args "./%e" paraméterek
    (a sor elején lévő gombbal a menüben megjelenő szöveg állítható be, pl "Futtatás - DEBUG")
Ez után az "Összeállítás" menüben már látható lesz az új lehetőség, melyet kiválasztva megnyílik egy terminálablak melyben a gdb az aktuális fájlhoz/projekthez tartozó futtatható állományt betöltve annak futtatására kész állapotban vár a hibakeresési parancsaokra.

Néhány a fontosabbak közül:
  • set args paraméterek - a hibakeresés alá helyezett program számára átadandó parancssori paraméterek megadása
  • show args - parancssori paraméterek kiíratása (ha elfelejtettük volna)
  • break sorszám - töréspont beállítása egy adott sorra
  • break fájl:sorszám - töréspont beállítása egy fájl adott sorára
  • break fájl:eljárásnév - töréspont beállítása egy fájl adott eljárására (function / procedure)
  • info break mennyiség - töréspontok adatainak kiíratása (pl. a helye és egyebek)
  • run - futtatás (töréspontnál megáll)
  • print változó - változó értékének kiírása amikor a futás fel van függesztve egy töréspontnál
További részletek: ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_toc.html
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 máj. 12 14:09 #2366

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
"Geany, mely tökéletesen támogatja a FreePascal használatát,"
Tényleg nagyon jó. Egyből működik és ez nem megszokott az egyéb IDE-knél.
A debug-ot, lépésenkénti futtatást, watch ablakot hogy oldod meg? Úgy látom a Geany nem tudja kezelni a debugot.

ptcgraph de hogyan? 2020 máj. 12 13:54 #2365

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Nem is tudom hirtelen hol kezdjem, mekem úgy tűnik még nem vagy nagyon otthon a linux-os világban....
Megyek a válaszokkal olyan sorrendben ahogy a gondjaid írtad.

Linux-on a konzolos programok számára automatikusan nem nyílik terminálablak, mert ezek többnyire jól el vannak nélküle (most nem zavarnálak össze a részletekkel) a Lazarus-ból indítottak esetén sincs ez másképp.
Ahhoz hogy terminálablakban lásd őket terminálablakban kell futtatni. Ezt a menüben a "Futtatás / Futtatási paraméterek ..." elemre kattintva tejeted meg. A megjelenő ablakban "Futtató alkalmazás használata" jelölölő négyzetbe pipa és "OK". Ez után már minden futtatáskor a beviteli mezőben megadott terminál jelenik majd meg és abban fogod látni a program kimenetét, illetve ott lehet a billentyűzetről adatokat bevinni. Ez a beállítás a projekt adataival együtt kerül tárolásra, tehát nem hat más projektekre.
Ha nem akarsz projekteket csak .pas fájlokat fordítani és futtatni akkor erre ott van a "Futtatás" menüben a "Fájl építése" és a "Fájl futtatása" menüpont, mely műveleteket elhelyezheted az eszköztáron, ha jobb gombbal kattintasz rá: "Beállítások".
Egy projekt tartalmazhat több egymástól független .pas fájlt, ekkor az előbbi parancsok az aktuális szerkesztőben lévőre vonatkoznak.

A projekt1.o azért nem futtatható mert az "csak" egy objektumfájl, ami nem a végleges futtatható állomány.
Unix típusú rendszereken az állományok futtathatóságát nem a kiterjesztés jelzi, hanem egy a fájlrendszerben az adott fájlhoz rendelt attribútum.
A unix rendszerekben a futtatható állományok (bináris) neve általában nem tartalmaz kiterjesztés (esetedben tehát csak projekt1 a név, bár ez nem tilos, sőt shell parancsfájloknál általában van.
Ha egy futtatható állományt az aktuális könyvtárból akarsz futtatni akkor a neve előtt ezt jelezni kell ( így: ./projekt1 ). A a Unix típusú rendszerek a futtatható állományokat a rendszer PATH változójában felsorolt könyvtárakban keresik, máshol nem, tehát az aktuális könyvtárban sem.

Ha végképp nem akarsz a beállításokkal foglalkozni akkor javaslom a Geany-t, mely telepítés után már a megfelelő beállításokkal használható... a megfelelő fordítóval fordít, ablakban futtat, stb.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 máj. 12 12:56 #2364

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Értem!
Jelenleg nagy sebességű célorientált genetikai kód feldolgozó programon dolgozom. Ezért maradnék a korábbról már jól ismert és gyors kódú konzolos alkalmazásnál. De grafikus megjelenítésre is szükségem van, ezért (jobbat nem ismerve) gondoltam a ptcgraph- bgi grafikánál. A Borland Pascal óta eljárt az idő fölöttem, most újra próbálok belerázódni csak sok minden változott azóta.

A lazarus grafikus IDE-jével is megpróbáltam sima konzolos programot fejleszteni, de a futtatás (háromszög) gombra csak egy Projekt fordítása sikerült ablakot kapok, a program futási eredményét sehol sem látom. Projektet sem akarok, csak .pas fájlokat, nem tudom miért erőlteti. De még a porjekt1.o -t sem lehet futtatni, nem futtatható a kód a linux szerint...
Kell, hogy megszeressem újra a pascal-t de eddig nemigen kényeztet. :-)

ptcgraph de hogyan? 2020 máj. 12 12:05 #2363

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
Az 'fp' karakteres képernyőkre írt IDE nem támogatja az UTF-8 használatát, aminek oka, hogy a felhasználói felületet adó FreeVision fejlesztői elsősorban TurboVision kompatibilitása törekszenek, melynek idején ilyesmi még szóba sem került.
Használj grafikus felületű, egyszerű programozói szerkesztőt, mint az általam is használt Geany, mely tökéletesen támogatja a FreePascal használatát, esetleg a Lazarus-t, amiben értelem szerűen szintén megoldható a dolog.
Ez a "probléma" egyébként be van jelentve .

A BGI betűkészletek formátuma emlékeim szerint szerzői jogvédelem alatt áll így a FreePascal csapatának nincs ráhatása ezek jelenére vagy jövőjére.
A BGI betűkészletek, épp úgy mint a TurboVision, az őskorból származnak és ezért nincs bennük UTF-8 támogatás.
Betűkészleteket és azok készítésére alkalmas, a Linux és UTF-8 nélküli időket idéző szoftvereket azonban találhatsz az inrneten: így vagy így .
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 máj. 11 19:21 #2362

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Haladok! Köszönöm!
Most olyat keresek, hogy... UTF8 ékezetekre felkészített .chr állományok léteznek vajon?

Anno lehetett olyat találni ami legalább az ASCII ékezeteket tartalmazza. Sajnos most a IDE-be se tudom beírni az ékezetes karaktereket, mert rögtön két bájtos krixkrax-ra konvertálja. Az alt + alfanumerikus számkód sem működik, a #kód -al meg elég macerás minden string konstans összes ékezetes betűjét össze fűzögetni. A kódban pedig igen zavaró és olvashatatlan lenne.
Tényleg van grafikus ide a karakteres fp-hez, ami ugyan úgy egy gombnyomásra fordít és futtat? Itt még a Ctrl C V is kiszámíthatatlanul működik, ha egyáltalán működik. Elkalandoztam....

ptcgraph de hogyan? 2020 máj. 01 08:07 #2361

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 499
  • Köszönetek: 86
A Graph unit létezik és része az FPC legutóbbi stabil kiadásának, ugyanígy a fejlesztői változatnak is. Tervben sincs a megszüntetése.
Valószínűleg telepítési probléma miatt nem találod a Graph unitot vagy az fpc.cfg fájl tartalma nem megfelelő (~/.fpc.cfg).

Ubuntu (és azon alapuló rendszerek) esetén a következő összefoglaló csomagokat kell telepíteni, amelyek telepítik az aktuális változatot és természetesen a függőségeket:
fpc - ez mindig az aktuális változatot jelenti (jelenleg 3.0.4)
fpc-source - ez mindig az aktuális változatot jelenti (jelenleg 3.0.4)

Telepítés után a Graph unit megtalálható a fájlrendszerben, nálam az alábbi helyeken:
bináris: /usr/lib/x86_64-linux-gnu/fpc/3.0.4/units/x86_64-linux/graph/
forrás: /usr/share/fpcsrc/3.0.4/packages/graph/

A ptcgraph-ról itt találsz néhány szót: wiki.freepascal.org/ptc
Itt pedig a ptcgraph online dokumentációja: ptcpas.sourceforge.io/api-reference/ptc/index-8.html
... de ismerkedésnek legjobb ha a példaprogramokat nézed át pl itt: /usr/share/fpcsrc/3.0.4/packages/ptc/examples/
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64
Megköszönték: Magortaltos

ptcgraph de hogyan? 2020 ápr. 30 21:09 #2360

  • Magortaltos
  • Magortaltos profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 18
  • Köszönetek: 0
Ubuntu linux alá tettem fel a karakteres fp -t.
Meglepetésemre graph unit már nincs. Helyette találtam egy ptcgraph unitot.
Azonban sok óra kereséssel sem találok egyetlen referencia kézikönyvet vagy példasort ami segítene használni. Mindössze a github-on találtam meg a ptcgraph.pp forráskódját. (Mondjuk nekem .ppu állományokban vannak a unitok, de az most mindegy.)
Még a freepascal.org -on is csak a graph unit parancsairól írnak, ami már nem is létezik nálam, és meg se említik a ptcgraph-ot.
Nem értem az egészet... Tudna valaki felvilágosítani?!

  • Oldal:
  • 1