Keresés

Részletes keresés

morcos csodagyerek Creative Commons License 2015.12.14 0 0 1023

Kipróbáltam az általad ajánlott Mouse.CursorPos.x és Mouse.CursorPos.y utasításokat is, de a Lazarusom nem ismeri a CursorPos azonosítókat - legalábbis ezt írja ki hibának. Mely unit tartalmazza őket?

Előzmény: _szergej_ (1021)
morcos csodagyerek Creative Commons License 2015.12.14 0 0 1022

Na, végre megjelenik már a labda - ha konkrét számot írok be megjelenési helynek. Viszont ha GetMosueX és Y-t, akkor megint azt az "external SIGSEGV" hibaüzenetet kapom, pedig a "mouse" unit-ot is használom.

Itt a teljes kód:

 

unit Unit1;

 

{$mode objfpc}{$H+}

 

interface

 

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, mouse;

 

type

{ TFoAblak }

TFoAblak = class(TForm)
procedure FormClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

 

type TLabda=class(TObject)
var xhely,yhely: integer;
kepe: TBitmap;
private
public
constructor letrehoz(xhelyitt,yhelyitt: integer; kepeitt: Tbitmap);
end;

 

var
FoAblak: TFoAblak;
labdakep: Tbitmap;
egylabda: TLabda;

 

implementation

 

{$R *.lfm}


constructor TLabda.letrehoz(xhelyitt,yhelyitt: integer; kepeitt: Tbitmap);
begin
xhely:=xhelyitt;
yhely:=yhelyitt;
kepe:=kepeitt;
end;

 

{ TFoAblak }

 

procedure TFoAblak.FormClick(Sender: TObject);
begin
egylabda:=TLabda.letrehoz(getmousex,getmousey,labdakep);
FoAblak.Canvas.Draw(egylabda.xhely,egylabda.yhely,egylabda.kepe);
end;

 

procedure TFoAblak.FormCreate(Sender: TObject);
begin
labdakep:=TBitmap.Create;
labdakep.LoadFromFile('labdabmp.bmp');
end;


end.

Előzmény: _szergej_ (1021)
_szergej_ Creative Commons License 2015.12.12 0 1 1021

Ezt te is ki tudod próbálni: a getmousex és getmousey helyére beírsz 2 random számot (pl. 30, 30) és ha így nem hullik el a programod (megjelenik a kép), akkor a 2 függvényhívással van a probléma, ha elszáll, akkor máshol. Ajánlom figyelmedbe a Mouse.CursorPos-t illetve akár meg is ismerkedhetnél a debugolással...

morcos csodagyerek Creative Commons License 2015.12.12 0 0 1020

A Labda create-jére gyanakszom, mert ott kéne elvileg az egérkoordinátákat megkapnia, de nem tudom, jó-e hozzá a getmousex és y?

Előzmény: NevemTeve (1019)
NevemTeve Creative Commons License 2015.12.11 0 0 1019

Biztos, hogy minden ponton ellenőrizted a hibalehetőséget?

 

somevar := SomeConstructor(params);

IF somevar=NIL THEN brühühü;

 

Előzmény: morcos csodagyerek (1018)
morcos csodagyerek Creative Commons License 2015.12.11 0 0 1018

Egész jó ez a Lazarus, de valami furcsa dologba ütköztem vele: egy olyan programocskát készítenék, melyben az ablakban kattintva az egérmutató koordinátáin labdák jönnek létre. A programom el is indul, de ilyen hibaüzenetet kapok, mikor kattintok valahová: External  SIGSEGV osztályú kivételt a 77BFD174 címen .

Itt a kódom is, hátha valaki ki tudná hámozni belőle, hogy mi lehet a baj:

 

unit Unit1;

 

{$mode objfpc}{$H+}

 

interface

 

 

uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, mouse;

 

type { TFoAblak }

TFoAblak = class(TForm)

procedure FormClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

 

type TLabda=class(TObject)

private xhely,yhely: integer; kepe: TBitmap;

public

constructor letrehoz(xhely0,yhely0: integer; kepe0: Tbitmap);

end;

 

var FoAblak: TFoAblak; labdakep: TBitmap; egylabda: TLabda;

 

implementation

 

{$R *.lfm}

 

constructor TLabda.letrehoz(xhely0,yhely0: integer; kepe0: Tbitmap);

begin

xhely:=xhely0;

yhely:=yhely0;

kepe:=kepe0;

end;

//end;

 

{ TFoAblak }

 

procedure TFoAblak.FormClick(Sender: TObject);

begin

egylabda:=Tlabda.letrehoz(getmousex,getmousey,labdakep);

FoAblak.Canvas.Draw(egylabda.xhely,egylabda.yhely,egylabda.kepe);

end;

 

procedure TFoAblak.FormCreate(Sender: TObject);

begin

labdakep:=TBitmap.Create; labdakep.LoadFromFile('labdabmp.bmp');

end;

 

end.

NevemTeve Creative Commons License 2015.11.27 0 0 1017

Pontosabban mondva, Windows-os alkalmazásfejlesztésre van kifejlesztve, nem csak általában Pascal-programozásra.

Előzmény: morcos csodagyerek (1016)
morcos csodagyerek Creative Commons License 2015.11.27 0 0 1016

Hallomásból ismerem csak a Delphi-t és annyit tudok róla, hogy "a Pascal programozási nyelv objektumközpontú kiterjesztésére, az Object Pascal nyelvre épül".

Namármost ha a Lazarusban a Delphi utasításai használhatók, az jó lesz nekem, mert megvan Marco Cantú kétkötetes műve, a Delphi 7 Mesteri szinten (a fenti idézetet is ebből vettem). Akkorhát eljött az ideje, hogy alaposabban átolvassam. :-)

Előzmény: NevemTeve (1015)
NevemTeve Creative Commons License 2015.11.26 0 0 1015

Delphit nem ismered, ugye? Na a Lazarus szerintem arra akar hasonlítani.

Előzmény: morcos csodagyerek (1014)
morcos csodagyerek Creative Commons License 2015.11.26 0 0 1014

Sziasztok!

 

Én annakidején a jó öreg DOS-os Turbo Pascal 7-tel sajátítottam el a programozás alapjait. Most az ingyenes és Windows alatti Lazarust ízlelgetem, és az a kérdésem, hogy mik az eltérések benne a régi TP7 utasításaihoz képest? Található valami összefoglaló leírás a parancsairól, utasításkészletéről? (Bújom a netet, de eddig nem találtam konkrétumot ezzel kapcsolatban.)

Azért kérdezem, mert a TP7 és a Lazarus logikája és felépítése némileg elüt egymástól; a TP7-ben ugye kapott az ember egy üres kódablakot és oda pötyögte az utasításokat és kifejezéseket míg a Lazarus ehhez képest első ránézésre bonyolultabb, mert ott eleve kitölti bizonyos dolgokkal a nem is egy ablakot. Így is sikerült első nekifutásra összehoznom vele egy próba programot, bár ez mindössze abból áll, hogy van két gomb és egy szövegmező, ami kiírja, hogy éppen melyikre kattintott a felhasználó. Azért ennél magasabb szintre akarok eljutni vele, úgyhogy próbáltam azt elérni, hogy egérgomb lenyomásra gyújtson ki egy képpontot ott, ahová kattintottunk. Viszont úgy látszik, a putpixel(getx,gety,szin) utasítást nem ismeri, mert hibát írt ki rá a Lazarus (a függvényben természetesen egy színkódot adtam meg a szin paraméter helyén számmal.).

Tehát ezért kérdezem, hogy van-e valami kifejezetten lazarusos segédlet - lehetőleg - magyarul a világháló valamely bugyrában vagy tud-e valaki dióhéjban adni itt némi segítséget az elinduláshoz vele?

lxt Creative Commons License 2015.10.11 0 0 1013

Ingyenes = nem akarok tőled semmit annak fejében (végképp nem pénzt), hogy végre jól érzed magad, hogy szabadon tudsz alkotni, de sőt, én attól érzem jól magam, hogy Te jól érzed magad (ez tök modern, hogy ne mondjam menő, még akkor is, ha nem vagy menekült - és, miután ez mindkettőnk megelégedését szolgálja) a magam részéről, köszönöm neked az élményt.

Mert van az absztrakciónak az a(z elméleti) szintje.:-)

Előzmény: DJG (1012)
DJG Creative Commons License 2015.10.06 0 0 1012

Az ingyenes egyébként nem is tudom, hogyan került bele. Egyik programozási nyelv sem kerül pénzbe. :-))

Előzmény: lxt (1007)
DJG Creative Commons License 2015.10.06 0 0 1011

De ha éppen Stroustrupra gondolsz, igen, nagyon rossz véleményem van róla. Ráadásul nem most alakult ki, már 20-25 évvel ezelőtt is az volt. Nem is alaptalanul, de ez nagyon messze vezetne a topiktól.

 

Nem akkora ügy a Java kérdése. Az, hogy bájtkódra fordít (ugyebár, azért ezt interpretálásnak nevezni elég nagy szakmai tévedés), nem túlságosan extra dolog, hiszen például a .NET is ilyen, meg lassan szinte minden. A nyelv önmagában annyira nagyon hasonlít a C#-hez, vagy az őhozzá (egyébként a születésük körülményeit tekintve, ugyebár, ez nem is akkora meglepetés), hogy a kettő között úgy lehet fel-alá korzózni, hogy észre sem veszed. A többi igazából csak a környezet kérdése. A Javát sosem sikerült úgy körülvenni, hogy asztalon igazán természetesen beleilleszkedjen a rendszerbe, ellentétben a .NET-tel.

 

Androidon viszont ez a kiindulási alap. Mostanában az Android a programozói szempontból legkomfortosabb oprendszer. A Windowson a WPF is tud mindent, de gyakran a legegyszerűbb dolgokhoz is nagyon sokat kell szenvedni vele (UI-ra gondolok, nyilván, nem a C# vagy egyéb kódsorokra), mobilon az iOS-ről szó se essék, akkora szívás, az Android meg nagyon jól ki lett találva ebből a szempontból.

 

Persze, amíg valaki egybe beledolgozza magát, és ott is marad, neki az a legkomfortosabb. Én például viszont állandóan egyszerre csinálom mostanában az összeset, úgyhogy eléggé a bőrömön érzem. :-)

Előzmény: Sánta Kutya (SK) (1009)
DJG Creative Commons License 2015.10.06 0 0 1010

Főleg, ha megmondanád, melyik részére gondolsz. :-)

Előzmény: Sánta Kutya (SK) (1009)
Sánta Kutya (SK) Creative Commons License 2015.10.05 0 0 1009

Hát ez egy érdekesen szélsőséges álláspont, amit azért a programozáshoz értők többsége valószínűleg nem osztana.

 

Viszont érdekelne, miben látsz ekkora különbséget az asztali és az androidos Java között.

Előzmény: DJG (1008)
DJG Creative Commons License 2015.10.05 0 1 1008

A Pascalt nagyjából ugyanaz tette tönkre, aki egy időre népszerűvé is tette, a Borland. A Delphi nagyon nagy baklövés volt.

 

Asztalon és mobilon ma leginkább C# van és Java. A C++-szal nem az a baj, hogy bonyolult, hanem az, hogy az eddigi történelem legpocsékabb programozási nyelve. Minden darabkáján látszik, hogy aki kitalálta, semmit nem értett a fordítóprogramokhoz. Az azóta bevezetett plusz bonyoldalmai gyakorlatilag semmi előnyt nem jelentenek, természetesen semmi olyat nem tud, amit valamelyik másik elterjedt nyelven ne lehetne sokkal könnyebben megvalósítani. Ettől még sokhelyütt adottság, tehát karrierszempontból nagyon is számolni kell vele.

 

Java asztalon nem nagy élvezet, az biztos, Androidon viszont tökéletes. És egyébként a Java meg a C# gyakorlatilag két tojás, nagyon kevés köztük az eltérés.

Előzmény: lxt (1007)
lxt Creative Commons License 2015.09.23 0 0 1007

A divatnyelvek okán haldoklik a Delphi (Object Pascal) is (majd' hogy nem gépközeli, viszonylag gyors kódot generál) - igaz már azzal is, csak egy ablakba kiírt "hello world" (közvetve) vagy 500 Kbyte operatív memóriát foglal le.:-) De ott a C#, ami (sacc) Basic bonyolultságú, viszont ingyenes – Visual Studio. A C++ szintaktikája (filozófiája) egy rémálom, nem kezdőknek való vidék – nyelvi és strukturális megkötései, csak a (vér)profik számára nem jelentenek problémát; számukra inkább előny.:-) Az interpreteres Java... hagyjuk. Amennyiben valaki a saját kedvére, tehát nem kereskedelmi céllal akar(na) asztali alkalmazás(oka)t készíteni – amit az utolsó generáció már bizonyosan nem tud értelmezni (de ez nem az ő hibájuk) –, akkor még a Lazarus is szóba jöhet.:-)

Előzmény: Vesuvius N2 (1006)
Vesuvius N2 Creative Commons License 2015.09.19 0 0 1006

Hogy ne használnák?

 

Még keresnek is fejlesztőket. Igaz, már egyre kevesebbet. (www.indeed.com, jobs.monster.com, stb.)

 

Akadnak elég nagy rendszerek, amelyeket ma is karban kell tartani, de az a helyzet, hogy a delphi pl. elég népszerű még ma is, nem véletlenül.

 

Tudomásom van olyan cégről, ahogy a mai napig a visual basic 'a nyelv'.

 

Te magad adod meg a választ a kérdésedre.

HTML-ben, JS-ben, php-ben írt x264 encoderrel meg még én sem találkoztam, de valszleg nem is fogok.

 

 

 

Előzmény: szjozsi79 (1005)
szjozsi79 Creative Commons License 2015.09.10 0 0 1005

Használják még a Turbo Pascalt bármilyen formában (Delphi, Lazarus, Free Pascal)? Valami gyakorlati haszna van? Fejlesztés, szoftverek, bármi?

Én alapvetően elégedett vagyok a html-js-php kombóval, vajon lehet szükségem még Pascalra?

Mondjuk, ha nem böngészőben szeretnék működni, akkor a html-js-php elég nehézkes lenne.

Fiatal koromban a TP volt az "etalon", az első normális programozási nyelv, de akkor még csak DOS-os környezetben. A basicet meg a fortrant nem érdemes említeni ...

Vesuvius N2 Creative Commons License 2015.09.02 0 0 1004

Az lehetetlen.

 

Ha a legutolsót töltötted dle, akkor annak csak el kell indítanod az installját. Mindent beállít.

A korábbi verziók voltak zűrösek, mert azoknál a freepascal-t külön kellett installálni és később megadni a lazarus környezetében a freepas útvonalát.

A legújabb már tartalmazza ezt.

Ha felinstalláltad, akkor elég csak elindítanod és a file menu-ben New->Application, és kész is, ott vagy a formoddal és az editorban.

 

Ime:

 

 

A formot félrehúzod és ott van mögötte az editor.

Abban megírod a kódodat és a futtatáshoz elég ha a kis zöld nyílra klikkelsz (pirossal jelöltem). Ez fordít és futtat is egyben. Ha hiba van a kódban akkor azt az editor ablak alján kiírja. Azt is, hogy melyik sor hibás.

 

 

Előzmény: Anne Duffield (1003)
Anne Duffield Creative Commons License 2015.09.02 0 0 1003

Leszedtem azt is, de még nem boldogulok vele.

Még nem tudok összeállítani egy primitív kezdő-formot sem...

:-((

Előzmény: Vesuvius N2 (1002)
Vesuvius N2 Creative Commons License 2015.09.02 0 0 1002

Nekem az nem tiszta, hogy miért parancssorban vergődsz és nem lazarus környezetben nyomod?

Sokkal jobb és egy formra (a kezdőformodra) kiirathatod a változóid pillanatnyi értékét, egyebeket, Maga az editor is jobb. Már kész lehetnél a programoddal. 

 

Előzmény: Anne Duffield (1001)
Anne Duffield Creative Commons License 2015.08.31 0 0 1001

Kösz, majd ha otthon leszek, nézegetem.

(Ezen a gépen nincs pascal)

Előzmény: NevemTeve (1000)
NevemTeve Creative Commons License 2015.08.31 0 0 1000
DJG Creative Commons License 2015.08.31 0 0 999

Biza, arra. Komplett új világ. Amíg csak arra van szükséged, hogy fájlból olvasni, fájlba írni, elég a konzol, nem kell windowsos felület a programodhoz, addig nem is feltétlenül érdemes, de te tudod, éppen mivel akarsz megismerkedni... :-)

Előzmény: Anne Duffield (998)
Anne Duffield Creative Commons License 2015.08.31 0 0 998

Erre gondoltál?

"Windows

This unit provides access to all Win32 API calls. Effort has been taken to make sure that it is compatible to the Delphi version of this unit, so code for Delphi is easily ported to Free Pascal."

 

Nézegetem, de még nagyon kínai! :-(

Előzmény: DJG (997)
DJG Creative Commons License 2015.08.31 0 0 997

Ott lesz az pedig, csak használnod kell. Az oldaluk leírja, hogy semmi dokumentációt nem adnak hozzá, mert egyfelől irdatlan nagy, másfelől a Win32 API, amit a Microsoft kellőképpen dokumentál, tehát minek megismételni.

Előzmény: Anne Duffield (994)
DJG Creative Commons License 2015.08.31 0 0 996

Pedig becsszóra, egy .pp fájl elejéről másoltam ezt most ide:

 

uses
Windows, Strings,

 

Meg kell nézni, hol volt és mi.

Előzmény: Anne Duffield (994)
DJG Creative Commons License 2015.08.31 0 0 995

Gyakorlatilag két út áll előtted: vagy használod a régi, a DOS-ból és a Windows 3.1 idejéből származó megoldásokat, de akkor tisztában kell lenned azzal, hogy ez a mai Windowsokon már mindenféle problémákhoz vezethet, amelyeket valamilyen módon át kell hidalnod, ha egyáltalán lehet, vagy pedig használod ugyanazt a fordítót Windowsos programok írására, és akkor minden kihasználhatsz a legeslegfrissebb lehetőségekig.

 

Viszont, mivel a FreePascal mögött nincs olyan erő, amelyik a legújabb technológiákhoz illesztette volna az évek, évtizedek során a dolgokat, bár mindent meg tudsz belőle is oldani, amit a Windowson meg tudsz oldani, szükségszerűen aránylag fapados marad, tehát a Windows dolgait meglehetősen közelről, alacsony szinten kell megfognod. Nagyjából úgy, mint ahogy 10-15 éve programoztunk Windowst, amikor még nem volt más mód rá, csak ez. Handle itt, handle ott, és a Win32 API közvetlen hívásai mindenhol. Szórakozásnak jó, de komoly programnak így már nem érdemes nekiállni.

 

Ha viszont modern környezetben, például .NET-ben akarnál Pascalt használni, hát, közvetlenül ma már nincs, a Delphi.NET kipusztult. Egy jó ötlet lenne még, az Oxygene, ami nem teljesen Pascal, de alapvetően abból alakult ki, máig megőrizte az alapvető dolgokat, de sok minden újat kapott hozzá.

Előzmény: Anne Duffield (993)
Anne Duffield Creative Commons License 2015.08.31 0 0 994

Itt,sajnos, nem látok windows run time library-t:

http://www.freepascal.org/docs-html/rtl/

Előzmény: DJG (992)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!