Hírek | Archívum | Fórum | IRC | Amiga | AmigaOS | FAQ | RSS

 - Fórumok - Regisztráció - Keresés - Statisztika - Szabályzat - Pegasos.hu fórum
forum.amigaspirit.hu / Fejlesztés / Általános fejlesztési kérdések
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . >>
Szerző Üzenet
Yellow Dog
Tag

# Elküldve: 2018. Sze. 19. 18:12


Szeretném megkérdezni "Az Amiga Programozása C és Assembly nyelven" című könyv nincs meg véletlenül valakinek jó(!) minőségí pdf-ben? Ami a neten kering, sajnos tele van hibákkal, gyakorlatilag használhatatlan.

Chain-Q
Divatamigás

# Elküldve: 2018. Sze. 19. 19:05 - Szerkesztve: charlie


Nekem megvan a könyv... Mármint retro oldschool papír meg minden. De azt nehéz átküldeni online. :) De ha megmondod h. melyik oldal kell, ami olvashatatlan a PDF verzióban és kritikus információt tartalmaz, esetleg lefényképezhetem v. mittomén. De azért az egész könyvet nem fotóznám le... :D

dino
Kék troll

# Elküldve: 2018. Sze. 19. 20:09 - Szerkesztve: dino


Quoting: yellowdog
Az Amiga Programozása C és Assembly nyelve


Nincs mit


Igy elsore nem lattam hibasnak...
Ha, hibas, akkor bocs.

Yellow Dog
Tag

# Elküldve: 2018. Sze. 19. 21:20 - Szerkesztve: yellowdog


Quoting: dino
Nincs mit

Sajna ez van meg nekem is, általában az oldalak alsó részénél tapasztalható a hiba, bár az egész szerkezete valami rettenet, gondolom valamilyen OCR-t ráengedhettek és eléggé sz.rul sikerült a végeredmény.
(I-J U-V és hasonló keveredések mindenütt, pl. 104. oldalon kimondottan alkalmas esettanulmánynak, nagyon dúúúrva)

Quoting: charlie
ha megmondod h. melyik oldal kell,

Köszönöm, nekem is megvan az elavult papír formátumban, csak el van pakolva jó mélyen és igazából utazás közben szerettem volna kicsit tanulmányozni a C részt, telefonon :-)

Yellow Dog
Tag

# Elküldve: 2018. Sze. 20. 09:54


"Studéroztam piszkosú", hogy hová is írjam, szóval hol van a helye? :-)

Itt. :P - az admin

Yellow Dog
Tag

# Elküldve: 2018. Sze. 24. 20:20


Okés :-)

BSzili
Tag

# Elküldve: 2019. Már. 21. 09:20


Piru még régebben felturbózta kicsit MorphOS-re a pthreads implementációmat. Talán a legérdekesebb változtatás a timeout-os SignalSemaphore obtain amit írt, viszont ehhez egy a jelenlegi SDK-ban nem található UNIT_WAITUTC timer.device unitot használt, így nálam nem fordul. A kérdésem az lenne, hogy ennek a konstansnak mi az értéke?

Chain-Q
Divatamigás

# Elküldve: 2019. Már. 21. 13:14 - Szerkesztve: charlie


Nem tudom, de rakerdeztem.

Szerk:
Ez az unit csak a MorphOS-fele timer.device v52-ben elerheto (ami talan 3.10+ vagy ilyesmi), szoval ezt megnyitaskor ellenorizni kell! Azaz eloszor megnyitod az UNIT_WAITUTC-t, ha az elfailel akkor lasd lent.

Az uj SDK-ban benne lesz, viszont az uj SDK csak a 3.12 utan lesz kiadva, ez a mondas... Az erteke amugy "7", szoval, UNIT_WAITCPUCLOCK+1. Regebbi timer.device-ken ill. nem MorphOS platformokon UNIT_WAITUNTIL hasznalhato helyette (ami ugyanaz csak UTC ido nelkul). Ezt mondjak a hozzabb-ertok.

BSzili
Tag

# Elküldve: 2019. Már. 26. 13:53


Kösz! Akkor nem hekkelek, és inkább belerakok egy fallback-et UNIT_WAITUNTIL-al v51-re és régebbi timer.device-okra. Majd kipróbálom AROS-on meg 3.x-en mit produkál aztán lehet kihajítom belőle a busy wait-es szemafor várakozást ahogy van.

Yellow Dog
Tag

# Elküldve: 2019. Máj. 12. 11:00


SAS C-hez keresnék example pakkot, amivel el tudnék indulni, köszönöm.

Jelige: "Minden érdekel" ;-)

Yellow Dog
Tag

# Elküldve: 2019. Máj. 12. 18:43


Próbálkozom amiket találtam de az első windows example sem akar lefordulni (és semmi más sem amiben pl. OpenLibrary és hasonlók szerepelnek), azt írja: "Warning 100 inExample1.c line 49: no prtottype declared for functio "OpenLibrary" és az összes többi hasonló utasítást megugatja, úgy mint:
52. sor: exit
57. sor: OpenWindow
70. sor: CloseLibrary
79. sor: Delay
84. sor: CloseWindow

Ha valakinek van ötlete és tudna segíteni ebben az eszement programnyelvben, megköszönöm.

Az Example1.c program:

/* Example1 */
/* This program will open a normal window which is connected to the */
/* Workbench Screen. It will display it for 30 seconds, and then close */
/* it. */
/* If your program is using Intuition you should include intuition.h: */
#include <intuition/intuition.h>
struct IntuitionBase *IntuitionBase;
/* Declare a pointer to a Window structure: */
struct Window *my_window;

/* Declare and initialize your NewWindow structure: */
struct NewWindow my_new_window=
{
50, /* LeftEdge x position of the window. */
25, /* TopEdge y positio of the window. */
150, /* Width 150 pixels wide. */
100, /* Height 100 lines high. */
0, /* DetailPen Text should be drawn with colour reg. 0 */
1, /* BlockPen Blocks should be drawn with colour reg. 1 */
NULL, /* IDCMPFlags No IDCMP flags. */
SMART_REFRESH, /* Flags Intuition should refresh the window. */
NULL, /* FirstGadget No Custom Gadgets. */
NULL, /* CheckMark Use Intuition's default CheckMark (v). */
"MY WINDOW", /* Title Title of the window. */
NULL, /* Screen Connected to the Workbench Screen. */
NULL, /* BitMap No Custom BitMap. */
0, /* MinWidth We do not need to care about these */
0, /* MinHeight since we havent supplied the window with */
0, /* MaxWidth a Sizing Gadget. */
0, /* MaxHeight */
WBENCHSCREEN /* Type Connected to the Workbench Screen. */
};
main()
{
/* Open the Intuition Library: */
IntuitionBase = (struct IntuitionBase *)
OpenLibrary( "intuition.library", 0 );

if( IntuitionBase == NULL )
exit(); /* Could NOT open the Intuition Library! */
/* We will now try to open the window: */
my_window = (struct Window *) OpenWindow( &my_new_window );

/* The "(struct Window *)" is not necessary but it tells the compiler */
/* that the function OpenWindow() returns a pointer to a Window */
/* structure. (See chapter 0 INTRODUCTION for more information about */
/* "casting".) */

/* Have we opened the window succesfully? */
if(my_window == NULL)
{
/* Could NOT open the Window! */

/* Close the Intuition Library since we have opened it: */
CloseLibrary( IntuitionBase );

exit();
}
/* We have opened the window, and everything seems to be OK. */
/* Wait for 30 seconds: */
Delay( 50 * 30);
/* We should always close the windows we have opened before we leave: */
CloseWindow( my_window );



/* Close the Intuition Library since we have opened it: */
CloseLibrary( IntuitionBase );

/* THE END */
}

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 12. 21:29


Nyitasnak ebbol a peldabol hianyoznak a kovetkezo sorok:

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>

Az exit() a libc resze, ergo annak talan az stdlib.h-ban kene benne lenni, szoval az is hianyzik.

mc68k
Tag

# Elküldve: 2019. Máj. 13. 04:25


A warning nem error, attól nem áll meg a build. Csak az error-t figyeld.

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 13. 11:39 - Szerkesztve: charlie


Igen, de ha ezeket a fuggvenyeket nem talalja a fordito, akkor azt hiheti h. ezek normal C fuggvenyek, ennek megfelelo szimbolumokat fordit hozza, es a vegen szetszall(hat) linker errorral.

Yellow Dog
Tag

# Elküldve: 2019. Máj. 13. 11:46 - Szerkesztve: yellowdog


Köszönöm a tanácsokat.

Quoting: charlie
#include <proto/intuition.h>

A programban szerepel már egyszer a #include <intuition/intuition.h> akkor ezt pl. nem értem...

Közben megtaláltam ezt az oldalt és a Lib_examples/ .c példákkal próbálkoztam, a többségét (vagy lehet mindet) sikeresen le is fordította (F4-re ha jól csinálom) és futnak is szépen a programok :-)
Szóval valami dereng, de azért vannak még kérdéseim, több minden nem világos, pedig már azt hittem kezdet érteni hozzá ;-) Múlt héten végignéztem Pokoláb Zoltán hihetelenül jó előadássorozatát és ez adott lökést, hogy nekifussak a C-nek immár komolyabban és nagyobb önbizalommal.
Közben lapozgatom a "Az Amiga programozása C és Assembly nyelven" című könyvet, bár egy kicsit keszekuszának tartom... szóval a könyvtárnyitásokat nem teljesen értem. Az egyik példában az alábbi rész szerepel:
if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37)))
errorMessage( "Requires V37 intuition.library");
else
{
if (NULL == (GfxBase = OpenLibrary("graphics.library", 37)))
errorMessage( "Requires V37 graphics.library");
else
{
if (NULL == (GadToolsBase = OpenLibrary("gadtools.library", 37)))
errorMessage( "Requires V37 gadtools.library");
else
{
gadtoolsWindow();

CloseLibrary(GadToolsBase);
}
CloseLibrary(GfxBase);
}
CloseLibrary(IntuitionBase);
}
}

Máshol viszont az alábbi módozat:
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library", 37L);

if (IntuitionBase == NULL)
ret_val = ERROR_INVALID_RESIDENT_LIBRARY;

A könyv is írja így is, úgy is pl. 39. oldalon, de ez utóbbi nekem sántít az OpenLibrary visszatérő értéke hová megy? Illetve a * az IntuitionBase mögött van, pedig ha pointer akkor előtte kellene lenni, nem?

Hirtelen ennyi, bocsi és köszönöm ;-)

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 13. 13:03


(struct IntuitionBase *) <- ez az OpenLibrary visszatero erteket egy struct IntuitonBase-re mutato pointerre castolja. A C-m egy kicsit berozsdalt, de szvsz itt maga a "struct IntuitionBase" mukodik mint tipus/valtozo, ergo nem igazan lehet koze *-t beszurni.

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 13. 13:35


Szolgalati kozlemeny: a fejlesztesi kerdeseket atmozgattam ide, leven ide jobban valok mint a szoftver problemak topicba.

BSzili
Tag

# Elküldve: 2019. Máj. 13. 15:18


yellowdog
Quoting: yellowdog
A programban szerepel már egyszer a #include <intuition/intuition.h> akkor ezt pl. nem értem...

Ez kicsit olyan, mintha leküldenének kenyérért, vennél helyette sört, és nem értenéd miért vannak kiakadva rád, hiszen az "folyékony kenyér" :D
A proto/intuition.h külön header, más van benne, mint az intuition/intuition.h-ban. Ha Intuition függvényeket akarsz hívni, akkor be kell include-olni az előbbit is.

Yellow Dog
Tag

# Elküldve: 2019. Máj. 14. 06:15


Quoting: charlie
fejlesztesi kerdeseket atmozgattam ide

Köszönöm, jogos...

Quoting: BSzili
proto/intuition.h külön header, más van benne, mint az intuition/intuition.h-ban

Oké, csak ezt (sem) nem tudtam, azért is kérdeztem meg itt, sajnos a könyvben sincsenek ilyesmire utalások, pedig jó lenne, ha tényleg az alapoktól indulna, indult volna. Égyébként a végén megemlítik, hogy tervben van, volt további kötet kiadása, tud erről valaki valamit?
Illetve keresem a könyv lemezmellékletét ADF formátumban, ha valakinek megvan és meg tudná osztani, megköszönném.

Tehát akkor melyik a helyes megoldás, hogyan kell elegánsan megnyitni egy library-t, esetleg mindkettőt helyesen fordítja a C fordító?

1.,
if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37)))
errorMessage( "Requires V37 intuition.library");


2.,
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library", 37L);

if (IntuitionBase == NULL)
ret_val = ERROR_INVALID_RESIDENT_LIBRARY;


Köszönöm

YADA
Tag

# Elküldve: 2019. Máj. 14. 09:37


hat, ez a ket kod egyenlo, effektiv ugyanaz

inkabb csak a program irojanak egojat noveli amikor egy sorba bezsufol egyebkent fuinkcionalisan kulonallo reszeket.

"az olvashatosag meg a karbantarthatosag sokadrangu" jeligere

Yellow Dog
Tag

# Elküldve: 2019. Máj. 14. 12:53


Erre voltam kíváncsi, hogy szintaktikailag elfogadott-e ha csak annyit írok, hogy OpenLibrary("intuition.library", 37L); és ekkor is átadódik az IntuitionBase változóba a függvény visszatérési értéke, vagy csak ha kiírjuk egyenletszerűen IntuitionBase = OpenLibrary("intuition.library", 37, de akkor ezek szerint mindegy a fordító van olyan okos, hogy ezt megfelelően fordítja.

YADA
Tag

# Elküldve: 2019. Máj. 14. 13:20 - Szerkesztve: Yada


jajj, NEM eleg

nincs kulon csak openlib sor

mindegyikben egyenletszeruen van megadva az ertekadas

elso:
if (NULL == (IntuitionBase = OpenLibrary("intuition.library", 37)))

azaz feltetel vizsgalat kozben ertekeadast is vegez, vastagon kiemelve (eros hibalehetoseg es kerulendo ego fitogtatas)

masodik:
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library", 37L);


az hogy az egyenlosegjel utan van egy typecast es ujsor karakter, csak vizualis tordeles, logikailag ugyanaz az egy sor maradt, ugyanaz az ertekeadas, ugyanugy a feltetel vizsgalat elott.
az IntuitionBase valtozo pedig korabban van deklaralva mindket esetben, typecast kozben nem deklaralunk uj valtozot.

elsoben csak a C nyelv kiertekelesi sorrendjevel jatszott az elkoveto, a masodikban meg implicit kiemelte feltetel vizsgalat elottre

Azthiszem en csak javasolni tudom az eros C alapok elsajatitasat, hogy ne zavarodj ossze ilyen esetekben.
Az ilyen example kodok nem a nyelv elsajatitasahoz adnak segitseget, hanem az rendszerhivasok hasznalatahoz. Kezdoket inkabb csak osszezavarjak.

aprosag hogy a parameterben atadott ertek (37) lustasagbol hagyatkozik a C compiler automatikus tipus konverzio es typecast kepessegere, emlekeim szerint a 37L a helyes verzio, de jelen esetben kb mindegy

ugy erzem ezt ezzel tul is targyaltuk

Yellow Dog
Tag

# Elküldve: 2019. Máj. 14. 18:28


Nincs egy hete, hogy tanultam és már el is felejtettem azt a nyavajás pontosvesszőt...
Így már érthető, köszönöm.

AliveMOon
Tag

# Elküldve: 2019. Máj. 14. 19:51 - Szerkesztve: alivemoon


C-ben akkor van vége egy sornak ha van ; A compiler ki fog dobálni minden space, tab, enter, és egyébb szeparátort és kommentet és csak a sallang mentes álományon fog dolgozni.

Yellow Dog
Tag

# Elküldve: 2019. Máj. 14. 21:05


Igen, hát még szoknom kell :-)

Yellow Dog
Tag

# Elküldve: 2019. Máj. 15. 11:15


Amiga OS alatt kézenfekvő a SASC saját editorának (se) használata, de PC-n történő programírás esetén kinek mi a véleménye a környezet kialakítását illetően, praktikus és trendi szempontok alapján?
Én azt találtam ki, hogy NotePad++-ban írom a forrást, amely a WinUAE alatt beállított DH1: partíció megfelelő könyvtárába menti azt, ahová írtam egy script-et:
sc program.c
sc link program.o
tartalommal. Mentés után átlépek az emulátorba és Shell-ből lefuttatom, így azt követően tesztelhető is a kész program. Nagyon béna (amatőr) szerintetek, van jobb, praktikusabb, menőbb? :-)

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 15. 11:41 - Szerkesztve: charlie


Quoting: AliveMOon
C-ben akkor van vége egy sornak ha van ; A compiler ki fog dobálni minden space, tab, enter, és egyébb szeparátort és kommentet és csak a sallang mentes álományon fog dolgozni.

És ez amúgy nem teljesen igaz. Másként nem kéne pl. \ karaktert használni sorfolytatónak bizonyos esetekben. És nem csak preprocesszorról beszélek pl. egy stringet is csak úgy tudsz folytatni, vagy inline asm-ot...

Yellow Dog
Tag

# Elküldve: 2019. Máj. 15. 12:19


Quoting: charlie
Nekem megvan a könyv... Mármint retro oldschool papír meg minden.

A lemezmelléklet nincs meg véletlenül ADF formátumban, illetve ha nincs, nem tudnál a lemezről készíteni? Nekem van lemezem, de sajnos nincs jó floppy meghajtóm.
Köszönöm

Chain-Q
Divatamigás

# Elküldve: 2019. Máj. 15. 16:19


Szerintem a lemez nincs meg hozza, de mintha ez mar lett volna kerdes a forumban es valakinek meg lett volna... De megnezem otthon. (Eltarthat par... hetig... :D )

Yellow Dog
Tag

# Elküldve: 2019. Máj. 15. 20:50


Rendben, várok, köszönöm.

Meg van már...? ;-)

<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . >>
forum.amigaspirit.hu / Fejlesztés / Általános fejlesztési kérdések
 
 

Powered by forum software miniBB™ © 2001-2019