English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés
Σ: 16 post

TCH  (statz) Főfasz
#1, Főfasz (10443)
1152 | #2510 | ^ | Idézet | Sat, 13 Apr 2013 02:42:24 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
@saxus:
Nem, C-ben olyan nincs, hogy "létrehoz" egy pointert, ott minden érték típus, a pointer csak annak megkülönböztetésére szolgál, hogy tudd, hogy az most memóriacím és nem egy sima int akar lenni. Ha meg valaminek a címét akarod lekérdezni (azaz inicializálni a pointert), akkor azt meg a reference operátorral (&) tesszük.
int a=1; // 1 lesz az értéke
int* b = &a; // valami random memóriacím lesz az értéke


Na meg ugyanennek a derefererálása:
int c = *b; // (c-be beírja, hogy 1)
Köszi, ezt én is tudtam...
@saxus:
A második az igen, typecast, ugyanis a TimerIO az struct timerequest* típusú, és szerintem az előbbi is typecast akar lenni, csak onnan valami kurvára hiányzik, mert (a tőlem okosabbak) azt mondják, hogy ilyen a C standardban nincs. Ettől persze lehet, hogy valami egyedi C fordító megesz ilyet.
Na, ez már hasznosabb volt, valószínűleg az Amigás SAS C eléggé custom egy darab, szóval lehet.
Ehun a teljes forrás.
Viszont még mindig nem tudom, hogy azt a részt akkor hogy írom át Pascalba. :P


saxus  (statz) Agyfasz
#9, Agyfasz (419)
258 | #2511 | ^ | Idézet | Sat, 13 Apr 2013 04:03:26 +02
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
Te kecskebaszó! Az idézett kódban honnan a halálból került oda a ; ? Az eredetiben nincs ott, a CreateExtIO kimenetét castolja.

TimerIO = (struct timerequest *)
    CreateExtIO( timerport, sizeof( struct timerequest ) );
if (TimerIO == NULL )




TCH  (statz) Főfasz
#1, Főfasz (10443)
344 | #2512 | ^ | Idézet | Sat, 13 Apr 2013 04:12:15 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
Nabazdmeg...azt a szart én raktam oda, mert azt hittem, hogy lemaradt onnan a forrásban...ezért imádom a C-t, plz magyarázd már el, hogy ott minek typecastol, meg egyáltalán egy structot minek typecastolni, pláne minek a saját tipusára typecastolni, de főleg hogy a bubánatba' lehet egyáltalán typecastolni...


saxus  (statz) Agyfasz
#9, Agyfasz (419)
614 | #2513 | ^ | Idézet | Sat, 13 Apr 2013 08:15:06 +02
84.3.*.* winfosfón nyóc suxplorer 10 Hungary *.catv.pool.telekom.hu
C-ben te a memóriával azt csinálsz, amit akarsz. Ha te ugy dontesz h az a void* valojaban egy KutyaFasza* struct, akkor az. Vagy Ld. Union (Avagy polimorfizmus in da szi vaj): egy Union belul tudsz definiálni tobb structot is, mindig a legnagyobb lesz a mérete. Definialsz pl egy uniót az ipv4es címnek, egyik nézete egy char a, b, c, d hol allo struktúra, masik nézete meg egy int. Ha kiiratod használod a bytenkent bontott format, ha dolgozol vele es nem kell bitmaszkolasokkal buzulni ha meg csak dolgozol vele vagy a memóriában pakolaszod, használod az intes nezetet. Attol meg ua a 4 bytes szeglete a ramnak.


saxus  (statz) Agyfasz
#9, Agyfasz (419)
322 | #2514 | ^ | Idézet | Sat, 13 Apr 2013 08:50:08 +02
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
Na és itt is van:

http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node0029.html

struct IORequest *-tel tér vissza a struct timerequest meg egy

struct timerequest
   {
       struct IORequest tr_node;
       struct timeval tr_time;
   };


Das ist eine OOP/Polimorfizmus in da C-way.


Prometheus  (statz) Főfasz
#3, Főfasz (1824)
52 | #2515 | ^ | Idézet | Sat, 13 Apr 2013 10:54:20 +02
86.101.*.* winhate Mozilla Firefox Hungary *.catv.broadband.hu
Kemi, nem vagy elérhető. Tudnánk beszélni telefonon?


kemi  (statz) Főfasz
#2, Főfasz (2970)
200 | #2516 | ^ | Idézet | Sat, 13 Apr 2013 11:43:15 +02
188.143.*.* Linux x86 Google Chrome Hungary *.pool.digikabel.hu
@Prometheus:
Kemi, nem vagy elérhető. Tudnánk beszélni telefonon?
Mert ki volt kapcsolva. Most már elérhető vagyok, és az a jó számom. (csak nem tudlak visszahívni, mert nincs pénz a kártyámon.)


TCH  (statz) Főfasz
#1, Főfasz (10443)
480 | #2517 | ^ | Idézet | Sat, 13 Apr 2013 13:31:09 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
saxus, azt tudom mi van a structokban (ahhoz van is már Pascalos unit), viszont a magyarázatod arra nem adott magyarázatot, hogy minek typecastolják itt azt a structot, ráadásul ugyanarra ami.
Apropó, structon belül egy másik struct az pointerként van jelen, vagy ténylegesen benne van a másik struct is?
http://hup.hu/cikkek/20130413/arm_az_arm_chipek_es_a_linux_vegigsopornek_az_iparagon
Ez jó hír.


saxus  (statz) Agyfasz
#9, Agyfasz (419)
978 | #2518 | ^ | Idézet | Sat, 13 Apr 2013 13:52:18 +02
84.3.*.* Apple Mac OS X x86 Apple Safari Hungary *.catv.pool.telekom.hu
structban structok = amennyi az ossz structok hossza, annyi lesz a memoriaban szekvencialisan lefoglalva.
unionban akarmi = leghosszabb elem hossza, az "alelemek" csak maz nezetek, mindegyik ugyanarrol a memroacimrol kezdodik. Ha struct IOResult* lenne, akkor termeszetesen pointer lenne a structban.

Es nezd mar meg, hogy kurvara nem ugyanazzal ter vissza:

struct IORequest *CreateExtIO(struct MsgPort *, ULONG);


Ilyen C fele OOP emulaciokor szoktak ezt igy csinalni, hogy a "szarmaztatott" structba beleturjak a masik structot az elejere. Azert van a timerequest elejen az IOResult struct. Gondolom a CreateExtIO megcsinalja az elejere es azert keri at a timerequest meretet parameterbe, hogy akkora helyet foglaljon le neki, hogy aztan a tobbi bizgentyu ne mast csapjon felul.

Mit ne mondjak, ez tipikusan az az eset szvsz, amikor 10000x kenyelmesebb lenne egybol valami OOP-t nativan tamogato nyelvvel jatszani, mintsem C-ben ganyolni :)


saxus  (statz) Agyfasz
#9, Agyfasz (419)
336 | #2519 | ^ | Idézet | Sat, 13 Apr 2013 13:58:45 +02
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
Egyébként, ha kultúráltan akarod átírni Pascalra, akkor használj valami ObjectPascalt, csinálj egy IORequest osztályt, abból meg származtassd a timerequest-et. És akkor nem kell ilyen nyomi structokkal szenvedni. Mondjuk már fingom nincs, de talán a Pascal is összemásolja a structokat egy nagy egészbe, ha nem külön pointert használsz.


TCH  (statz) Főfasz
#1, Főfasz (10443)
881 | #251a | ^ | Idézet | Sat, 13 Apr 2013 20:06:09 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
@saxus:
Mit ne mondjak, ez tipikusan az az eset szvsz, amikor 10000x kenyelmesebb lenne egybol valami OOP-t nativan tamogato nyelvvel jatszani, mintsem C-ben ganyolni :)
Feltűnt, hogy ez Amigára van? Feltűnt, hogy nem én írtam? Azzal kell dolgozni, ami van. Amúgy legszívesebben ASM-ben csinálnám, mert ott már a fordításra összerakhatom kézzel az összes adatot oszt csak ugrálgatok, de ez van.
@saxus:
Egyébként, ha kultúráltan akarod átírni Pascalra, akkor használj valami ObjectPascalt, csinálj egy IORequest osztályt, abból meg származtassd a timerequest-et. És akkor nem kell ilyen nyomi structokkal szenvedni. Mondjuk már fingom nincs, de talán a Pascal is összemásolja a structokat egy nagy egészbe, ha nem külön pointert használsz.
Amigára nincs Object-Pascal; volt egy AmiPascal nevű próbálkozás, ködbeveszett, csak sima Pascal van.
kemi, akkor segítesz átírni?


TCH  (statz) Főfasz
#1, Főfasz (10443)
2970 | #251b | ^ | Idézet | Sat, 13 Apr 2013 21:33:49 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
Ok, akkor kemi, vagy saxus, vagy akárki, akinek van rálátása mindkét nyelvre. Itt az eredeti 4 függvény
struct timeval {
    ULONG tv_secs;
    ULONG tv_micro;
};

struct timerequest {
    struct IORequest tr_node;
    struct timeval tr_time;
};

struct timerequest *create_timer(ULONG unit)
{
	LONG error;
	struct MsgPort *timerport;
	struct timerequest *TimerIO;

	timerport = CreatePort(0, 0);
	if (timerport == NULL)
	{
		return(NULL);
	}

	TimerIO = (struct timerequest *) CreateExtIO(timerport, sizeof(struct timerequest));
	if (TimerIO == NULL)
	{
		DeletePort(timerport);
		return(NULL);
	}

	error = OpenDevice(TIMERNAME, unit, (struct IORequest *) TimerIO, 0L);
	if (error != 0)
	{
		delete_timer(TimerIO);
		return(NULL);
	}
	return( TimerIO );
}

void wait_for_timer(struct timerequest *tr, struct timeval *tv)
{
	tr->tr_node.io_Command = TR_ADDREQUEST;
	tr->tr_time = *tv;
	DoIO((struct IORequest *) tr);
}

void delete_timer(struct timerequest *tr )
{
	struct MsgPort *tp;

	if (tr != 0 )
	{
		tp = tr->tr_node.io_Message.mn_ReplyPort;

		if (tp != 0)
		{
			DeletePort(tp);
		}

		CloseDevice( (struct IORequest *) tr);
		DeleteExtIO( (struct IORequest *) tr);
	}
}

LONG time_delay(struct timeval *tv, LONG unit)
{
	struct timerequest *tr;

	tr = create_timer(unit);
	if (tr == NULL)
	{
		return(-1L);
	}
	wait_for_timer(tr, tv);

	delete_timer(tr);
	return (0L);
}
itt meg amit Pascalban sikerült alkotnom.
type

	ttimeval = packed record
		tv_secs: longword;
		tv_micro: longword;
	end;
	ptimeval = ^ttimeval;

	ttimerequest = packed record
		tr_node: tiorequest;
		tr_time: ttimeval;
	end;
	ptimerequest = ^ttimerequest;

function create_timer(_unit: longword): pttimerequest;
var
	error: longint;
	timerport: pmessageport;
	timerio: ptimerequest;
begin
	timerport := createport(0, 0);
	if (timerport = nil) then
	begin
		create_timer := nil;
		exit
	end;
	
	timerio := ptimerequest(createextio(timerport, sizeof(ttimerequest)));
	if (timerio = nil) then
	begin
		deleteport(timerport);
		create_timer := nil;
		exit;
	end;

	error := opendevice('timer.device', _unit, piorequest(timerio), 0);
	if (error <> 0) then
	begin
		delete_timer(timerio);
		create_timer := nil;
		exit;
	end;
	create_timer := timerio;
end;

procedure wait_for_timer(tr: ptimerequest; tv: ptimeval);
begin
	tr.tr_node.io := 9;
	tr.tr_time := tv^;
	doio(piorequest(tr));
end;

procedure delete_timer(tr: ptimerequest);
var tp: pmsgport;
begin
	if (tr <> nil) then
	begin
		tp := tr.tr_node.io_message.mn_replyport;
		if (tp <> nil) then
		begin
			deleteport(tp);
		end;
		closedevice(piorequest(tr));
		deleteextio(piorequest(tr));
	end;
end;


function time_delay(tv: ptimeval, _unit: longword): longint;
var tr: ptimerequest;
begin
	tr := create_timer(_unit);
	if (tr = nil) then
	begin
		time_delay := -1;
		exit;
	end;
	wait_for_timer(tr, tv);

	delete_timer(tr);
	time_delay := 0;
end;
Stimmel? Elbasztam? Egyéb?


saxus  (statz) Agyfasz
#9, Agyfasz (419)
235 | #251c | ^ | Idézet | Sun, 14 Apr 2013 18:53:14 +02
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
"Feltűnt, hogy ez Amigára van? Feltűnt, hogy nem én írtam?"

Feltűnt, miután rákerestem az eredeti kódra. Ott viszont írtak C++ fordítót is. Mindegy, nem nyitok vitát a C-sek önszopató perverzióiról.

Kódot meg majd megnézem.


TCH  (statz) Főfasz
#1, Főfasz (10443)
466 | #251d | ^ | Idézet | Sun, 14 Apr 2013 19:15:24 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
@saxus:
Feltűnt, miután rákerestem az eredeti kódra.
Belinkeltem az eredeti kódot, mi a túrónak kellett keresni?
@saxus:
Ott viszont írtak C++ fordítót is.
A feladat nem az volt, hogy írjuk át OOP modellre a meglévő kódot, hanem, hogy írjuk át Pascalra.
@saxus:
Mindegy, nem nyitok vitát a C-sek önszopató perverzióiról.
Nem vagyok C-s. Ha az lennék, nem akarnám átírni a kódot egy totál más nyelvre.
@saxus:
Kódot meg majd megnézem.
Thx.


saxus  (statz) Agyfasz
#9, Agyfasz (419)
196 | #251e | ^ | Idézet | Sun, 14 Apr 2013 20:08:27 +02
84.3.*.* winhate Mozilla Firefox Hungary *.catv.pool.telekom.hu
"Belinkeltem az eredeti kódot, mi a túrónak kellett keresni?"

Mert először csak egy kódrészletet adtál :)

Amúgy első ránézésre jónak tűnik. Itt is "0"-ként értelmezett a nil?


TCH  (statz) Főfasz
#1, Főfasz (10443)
222 | #251f | ^ | Idézet | Sun, 14 Apr 2013 22:04:36 +02
78.92.*.* Linux x86 Opera Classic Hungary *.catv.pool.telekom.hu
@saxus:
Mert először csak egy kódrészletet adtál :)
Jogos.
@saxus:
Amúgy első ránézésre jónak tűnik. Itt is "0"-ként értelmezett a nil?
Igen, a nil az a C-s null Pascalos megfelelője.


English | Magyar
JS ki | CSS ki | Ékezetek ki | HiContrast
Lapozó:  (0 - 1424) 
<== | ==>
Ugrás a végére | Összes megjelenítése | Utolsó oldal
OpenOpera patches | Opera-SSL patches | Opera 12.15 source (Git repository) | Opera 12.15 source (Torrent) | Opera internal pages | Otter Browser Linux x64 - Qt5.15.2/QtWebKit5.602.1 (2024.04.27. 20:05)
OS for MC680x0 | OS for PPC | OS for Sparc64 | besztofbégéaefcé | CSÉNDZSLOG | WebToolz | DDG Shit Filter | Google Shit Filter | Progz | Fast CSS Box | Browser | OS | Agent | Statisztika | BBCode
Monospace font-family: Courier New | Browser default monospace
Email értesítő / Email notification ===> 
Keresés

Név: (max 255 byte)

Email: (max 255 byte) Nem kötelező!

Üzenet: (max 65536 kar.) 65536-0=65536




crap_vkn v4.34.0 by TCH
Thx to saxus for the escaped string decoder function (PHP), the realIP function (PHP) & the SQL handle layer (PHP), to thookerov for the int_divide function (PHP), to Jeff Anderson for the getSelText function (JS), to Alex King for the insertAtCursor function (JS), Flood3r for the new CSS styles, Pety for the spamprotection idea and some design and comfort ideas, MaxMind for the IP2Country database, famfamfam for the flags of countries and an unknown PHP programmer for the removeAccents function.



Kecskebaszók ide!