Hollosi Information eXchange /HIX/
HIX CODER 965
Copyright (C) HIX
2000-10-06
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 VC++ DLL kezeles (mind)  10 sor     (cikkei)
2 Message Dispatcher (BC++, de gondolom VC++ alatt is ugy (mind)  76 sor     (cikkei)
3 prim.c (mind)  41 sor     (cikkei)
4 Fw: Turbo Pascal rendezes (mind)  23 sor     (cikkei)
5 Re: Logikusan: elvalaszto (mind)  24 sor     (cikkei)
6 RE:perl tombmeret lekerdezes es egyebek... (mind)  8 sor     (cikkei)
7 VB RichTextBox (mind)  16 sor     (cikkei)
8 RE: Logikusan: elvalaszto (mind)  47 sor     (cikkei)
9 Re: perl tombmeret lekerdezes es egyebek... (mind)  109 sor     (cikkei)
10 Re: segiccseg!!! (mind)  31 sor     (cikkei)
11 Pascalos Scankod tablazat (mind)  95 sor     (cikkei)
12 Re: Logikusan: elvalaszto (mind)  22 sor     (cikkei)
13 DOS-os BAT (mind)  15 sor     (cikkei)

+ - VC++ DLL kezeles (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok
Adott egy DLL. Hogy tudom hasznalni a benne levo fuggvenyeket? 
LoadLibrary-val betoltom, kapok egy HANDLE-t. Az MSDN-nel 
annyira jutottam, hogy a GetProcAddress-szel kene valamit 
eloadni, de nem sikerult...
Elore is koszi!

> ---------------------------------------------------------------
E-Mail: mailto: (PMail32 v3.12b)
Web: http://www.tar.hu/mephysto http://www.extra.hu/mephysto
+ - Message Dispatcher (BC++, de gondolom VC++ alatt is ugy (mind) VÁLASZ  Feladó: (cikkei)

Hi,
Egy controlt irok BC++ (nem Builder!) ala. A control kuldozget uzeneteket a
parent dialogusanak.
Ezek az uzenetek Notification jelleguek, tehat pl. egy grid objektum eseten
elkuldi, hogy melyik Column felett nyomott bal gombot a tisztelt User.
Eleg primitiven sikerult csak megoldanom a dolgot.
A Parent message handlerebe rakok egy event handlert

DEFINE_RESPONSE_TABLE1( TSSTestDialog, TGiDialog )
   EV_GSSN_FORMATAUSWAHL( 101, OnSSFormatAuswahl),
END_RESPONSE_TABLE;

typedef struct tagGSS_NOTIFY
{
   NMHDR     m_hdr;        // Header for WM_NOTIFY !!!!!!
   UINT      m_Row;        // Number of Row causing this notofication
   UINT      m_Column;     // Number of Column causing this notofication
} GSS_NOTIFY;

template <class T>
inline void (T::*v_GSS_FORMATAUSWAHL_NOTIFY_Sig(void (T::*pmf)(GSS_NOTIFY
far&)))(GSS_NOTIFY far&)
{
  return pmf;
}

#define EV_GSS_FORMATAUSWAHL_NOTIFY(id, notifyCode, method)\
  { notifyCode, id, (TAnyDispatcher)::v_LPARAM_Dispatch,\
  (TMyPMF)v_GSS_FORMATAUSWAHL_NOTIFY_Sig(&TMyClass::method)}

#define EV_GSSN_FORMATAUSWAHL(id, method) EV_GSS_FORMATAUSWAHL_NOTIFY(id,
GSSN_FORMATAUSWAHL, method)

void TSSTestDialog::OnSSFormatting( GSS_NOTIFY& gss_Notify )
{
	m_pGiSpdSt->SetColumnFormat( gss_Notify.m_Column );
}

Ez igy eleg ciki, mert a parent kodjaban a Notify strukturabol meg ki kell
szedni, hogy melyik tagja tartalmazza a lenyeges infot. (gss_Notify.m_Column
)
(Ilyen uzenetet kuldd a control: SendMessage ( GetParent ( hWnd ),
WM_NOTIFY, ( WPARAM ) GetWindowLong ( hWnd, GWL_ID ), ( LPARAM ) &nmGiSS );)

Ezt kellene valahogy felszepiteni, hogy a Parent szebb uzentet kapjon, pl
ilyet:

void TSSTestDialog::OnSSFormatting( uint Column )
{
	m_pGiSpdSt->SetColumnFormat( Column );
}

De az istennek sem tudom megirni hozza a message crackert
Gondolom valami ilyen uzenetet kellene kuldenem ebben az esetben a
controlltol:
SendMessage ( GetParent ( hWnd ), WM_COMMAND, MAKEWPARAM ( GetWindowLong (
hWnd, GWL_ID ), GSSN_DELETECOLUMN ), MAKELPARAM ( hWnd,
pGSSData->m_LeftClickDownCell.m_Column ) );


2. kerdes

A win32.hlp ezt irja a RegisterWindowMessage-el kapcsolatban:
Only use RegisterWindowMessage when more than one application must process
the same message. For sending private messages within a window class, an
application can use any integer in the range WM_USER through 0x7FFF.
(Messages in this range are private to a window class, not to an
application. For example, predefined control classes such as BUTTON, EDIT,
LISTBOX, and COMBOBOX may use values in this range.) 

Melyik fuggvennyel regisztralhatom az application private messageimet?
Erre azert lenne szuksegem, hogy a GUI programozo ne tudja hozzarendelni a
message handleremet egy editboxhoz pl. (legalabbis ne okozzon galibat)

Kosz:
dAb
+ - prim.c (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

#include <stdio.h>
#include <stdlib.h>

main () {
int szam;
int eredmeny;
printf("Írj be egy számot:");
scanf("%d", &szam);
eredmeny = prim(&szam);
if (eredmeny == 0)
	printf("A szám prím");
else if (eredmeny != 0)
	printf("A szám nem prím");
}

prim (szam) {
int x, y;
div_t div(int x, int y);
long int ciklus;
long int ertek;
int eredmeny;
	for (ciklus = 1; ciklus <ertek; ciklus++) {
		ldiv_t ldiv(ciklus, ertek);
		if (y != 0)
			eredmeny++;
	}
return eredmeny;
}

Miert nem megy a program? Egybol megall a compiler azzal, hogy prim.c:
In function `prim': prim.c:23: warning: parameter names (without types)
in function
declaration
Mitol van ez? Hogyan tudom mukodesre birni az ldiv fuggvenyemet?

Elore is kosz minden valaszt:

Aron
kerlwk maganba is: 
+ - Fw: Turbo Pascal rendezes (mind) VÁLASZ  Feladó: (cikkei)

Igen tisztelt programozok!
 
 Az alabbi problemaval fordulok Onokhoz...
 
 Szoval van egy regebbi kis programocskam, mely TP7.0 alatt
irodott, de nem talalok egy olyan hatekony rendezesi algoritmust,
melyet rendesen at tudnek alakitani celjaimnak.
Adott egy olyan adatbazis, mely rendezetlenul tarolja a beerkezo
 rekordokat. (az ujakat mar rendezne, de egyenlore nincs mihez,
 ehhez a beszurasos rendezest valasztottam az uj adatok bevitele-
 nel.) Ket kulcsmezo van, ezeket kellene berendezni novekvo sor-
 rendbe. Ha van valamilyen jo otletetek, ne habozzatok megosztani
 velem. (Tudom, polyasoknak valo a TP, de meg nem vagyok annyira
 otthon az OOP es a Visual nyelvekben, de ami kesik nem mulik...)
 
 Meg valami: ha valakinek meg van a TurboSort programcsomag,
 - es hajlando lenne elkuldeni, vagy ajanlani egy weblapot - kerem
 jelezze nekem
 
 Koszonettel: Koncz Tamas
 
 
>
+ - Re: Logikusan: elvalaszto (mind) VÁLASZ  Feladó: (cikkei)

Hello CODER!

2000. október 5. 5:04:00 AM -kor irtad:


> Felado : Runtime Dreams
> E-mail :  [Hungary]
> Temakor: Logikusan: elvalaszto ( 53 sor )
> Idopont: Tue Oct  3 12:13:26 EDT 2000 CODER #963
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1. Elso kozelitesben csak azokat a sorokat vizsgáld,
   amiben nem szerepelnek a betük és számok és nem space-bol alnak.

2. Ha nics behatarolva a "mintazat" hossza akkor elvileg mar meg
talaltad :)

3. Ha igen, akkor olvas a sorbol annyi karaktert, es karakterenkent
keresd a sorban /2. elofordulast/ ha az egymasutani karaktereket
egymas utan talalod masdszorra is, akkor nagy valoszinuseggel megvan
az elvalaszto sor.

Üdvözlettel!
     mailto:
+ - RE:perl tombmeret lekerdezes es egyebek... (mind) VÁLASZ  Feladó: (cikkei)

> Van egy apro gondom, nem tudom pl. egy asszociativ % vagy egy normal @
> tombrol eldonteni, hogy mekkora, ha pl van egy @t tombom, ami 
> 10 elemu a $t
> csak valami ARRAY(0x881bc)-ad vissza, a zarojelek kozotti ertek tomb
A scalar(@t);-vel probalkozzal szerintem.

udv
	Biri
+ - VB RichTextBox (mind) VÁLASZ  Feladó: (cikkei)

Udv!

A gondom a kovetkezo: van egy kis vb programom, amiben hasznalok egy rtf
controlt. Ebben bizonyos szovegreszeket automatikusan ki akarok emelni,
mondjuk boldolni. Szepen vegigkeresgelem a .find-dal, es a selected cuccost
selbold=true ra teszem. Minden mukodik, es szep. A baj az, hogy a .find
kozben a kepernyon levo szoveg scrollozodik, ahogy keresgeli a kovetkezo
stringet, ami kicsit idegesito, raadasul ha befejezte, akkor a szoveg az
utoljara boldot sornal marad. Hogy lehetne megoldani, hogy mikozben keres,
ne ugraljon a szoveg?

koszi
	Biri

Ui: Ha esetleg csak vc-ben tud valaki megoldast, az is johet, max atirom az
egeszet.
+ - RE: Logikusan: elvalaszto (mind) VÁLASZ  Feladó: (cikkei)

Szia Barnabas!

Probald meg a kovetkezot:

Olvasd vegig a karaktersorozatot úgy, hogy 
minden karakternel megjegyzed azt,
hogy hany karakterrel fordult elő előrebb.
A keresest az eddig elofordult maximumtol inditsd.
Ha meg nem szerepel a kerarkter, akkor az ertek 0

Peldaul az alabbi sorozatnal:

-*=-=*--*=-=*-

0		max: 0
00		max: 0
000		max: 0
0003		max: 3
00030		max: 3 (kereses az akt poz -3 rol indul)
000304	max: 4
0003046	max: 6
00030467	max: 7 (megvan a minta tehat minden 7)

A vegeredmeny:
00030467777777

Ha tehat a sorazat vegen sok ugyanolyan szamot talalsz
(ami nem 0) akkor megva a keresett sor.

A hibás sor detektalasara tobb megoldas lehetseges:

1. Korlatot vezetsz be a minta hosszara (max ertekre),
ha ezt elerte, akkor nullazod, mindent ujra kezdesz,
mintha itt kezdodne a szoveg.

A peldaddal elve mondjuk a korlat 9
(kilencnel hoszabb ismetlodest nem talal meg):

---------------- -------------------------------
011111111111111102345678901111111111111111111111

2. Hosszu monoton sorozat utan kiugro ertekkel rendelkezo
karaktert kihagyod a figyelesbol.

Üdv,

Péter
+ - Re: perl tombmeret lekerdezes es egyebek... (mind) VÁLASZ  Feladó: (cikkei)

Kedves Lista!

On 4 Oct 2000, at 22:13, HIX CODER wrote:

> Felado :  [Hungary]

> Most ismerekedem a perl-el, eleg keves infom van rola, eddig csak
> forraskodokat nezegettem, de probalkozom. ;-))

Pedig olyan doksik vannak a neccen, hogy pacsit ad! :-)

> Van egy apro gondom, nem tudom pl. egy asszociativ % vagy egy normal @
> tombrol eldonteni, hogy mekkora, ha pl van egy @t tombom, ami 10 elemu a

Idezet a perldata manpage-bol:

$#days # the last index of array @days

azaz a tomb merete egyel nagyobb, mert az elso index 0.

> $t csak valami ARRAY(0x881bc)-ad vissza, a zarojelek kozotti ertek tomb

Csak akkor, ha a $t-be betettel valamit. Normalis esetben a $t-nek semmi koze 
a @t-hez, es a %t-hez. Siman hasznalhatod mind a 3-at parhuzamosan. A @t egy 
elemere ugyanis ugy hivatkozol, hogy $t[1] (a []-bol kiderul, hogy a @t-t 
kell hasznalni). A %t egy elemere pedig $t{'akarmi'}, amibol megint kiderul, 
hogy mirol is van itten szo.

> meretenek novelese vagy csokkentese utan sem valtozik, a kerdesem az

Persze, hogy nincs, mert ez csak egy ponter, amit esetleg ugy toltottel bele 
a $t-ben, hogy \@t.


> lenne, hogy mivel kapom meg a tomb elemszamat esetleg a meretet valamifele

l. fent. Illetve a $t = @t egybol ezt adja, hiszen egy tomb scalar helyen ezt 
adja vissza alapban (l. perldata manpage).

Egy pelda:

my @t=(2,4,6,8);
print @t;
print "\n";
print @t."\n";
print scalar(@t)."\n";
my $t = @t;
print $t."\n";

Es az eredmeny:

2468
4
4
4

Az asszociativ hash-el egy egeszen picit trukkozni kell, mert scalar 
kornyezetben egy stringet ad vissza, ami a kovetkezo formatummal rendelkezik: 
"kulcsok_szama/osszes_tombelem". Tehat a peldaprogram:

my %t=(a => 2, b => 4, c => 6, d => 8);
print %t;
print "\n";
print %t."\n";
print scalar(%t)."\n";
my $t = %t;
print $t."\n";
print substr($t,0,1)."\n";
print ($t+0)."\n";

Es az eredmeny:

a2b4c6d8
4/8
4/8
4/8
4
4

> sizeof van? Trukkosen ki tudom nyerni, de gondolom van erre valami egyszeru
> megoldas.

Igen van! :-)

> A masik a perl for-ja elfogad-e ilyesmit?
> for (i=0,j=1;i<10;i++){...}
> Tehat lehet-e ','-vel elvalasztani kifejezeseket, mint normal C-nel?

for($i = 1, $j = 1; $i < 5 ; $i++) { print $i.":".$j."\n"; }
for( my( $i, $j ) = ( 1, 1); $i < 5; $i++) { print $i.":".$j."\n"; }

A masodik u.a., csak lokalis valtozoval.

> Megegy dolog, milyen gyakorlati ertelme van az unless-nek? Ha jol
> ertelmeztem a dolgot, akkor ez siman csak egy if, azzal a kulonbseggel,
> hogy itt akkor lep be moge a progi, ha hamis a feltetel...

Pont ez az ertelme. Olvashatobba teszi a kodot. Ha nem kell, akkor ne 
hasznald. Ha szereted, akkor hasznald egeszseggel. Ugyan ez az ertelme a 
hetravetett if-nek is. Egy dolgot PERL-ben nagyon sokfelekeppen meg lehet 
oldani. Azt hasznald, ami a szerinted legolvashatobb...

En hosszas shell (bourne, ksh), awk, sed, grep turasi tapasztalattal kezdtem 
a PERL-t hasznalni es szerintem nagyon jol hasznalhato. Most irtam egy soros 
port turo porg-ot. Az alapot C-ben. Amikor az ment, akkor a feldolgozast PERL-
ben csinaltam meg es a soros port kezelest nagyon egyszeruen attettem PERL-be 
A POSIX modullal szinte csak sormasolas.

Sok sikert && udv From:, a botladozo
+ - Re: segiccseg!!! (mind) VÁLASZ  Feladó: (cikkei)

Kedves Lorincz Zoltan!

On 4 Oct 2000, at 22:13, HIX CODER wrote:

> Felado :  [Hungary]

> a keresem a kovetkezo:
> soros, vagy parhuzamos portra lesz csatlakoztatva
> egy hazilag keszitett potmeter hangeroszabalyozas
> celjabol.
>  - Win alatt hogy lehet a hangerot szabalyozni
>  - Win alatt hogy lehet ezt a port kommunikaciot megvalositani.

Ezt nem ertem. Ha potmeter, akkor a hangkartya game-portjara tudod kotni. 0-
100 kOhm-ot kell tudnod es 4 potmetert tudsz bekotni. Ha kell, akkor leirom 
hogyan. A parhuzamos/soros port-on keresztul csak nagy kavarassal tudnal 
adatokat bekuldeni (A/D konverter, egyebek).

Ha mindenkeppen a soros portot szereted, akkor belezz ki egy egeret. Igy ket 
tekertyud is lesz, amit akar hangero szabalyzasra is hasznalhatsz...

> A legnagyobb segiccseg az lenne, ha parsoros peldaprogikat
                   ^^

Brrr...

> kuldenetek

Kuldhetek, ha pontosan eldontod, hogy mit szeretnel csinalni...

Udv From:, a peldamutato :-)
+ - Pascalos Scankod tablazat (mind) VÁLASZ  Feladó: (cikkei)

Hali coderek

>Meg nagyon nagy szuksegem lenne egy Pascalos escape kod tablazatra, amivel
>figyelni tudom a leutott billentyuket

Az itt kovetkezo program a "VGA kartya programozasa" cimu konyvben jelent
meg
(Egyebkent egy pascalos programozonak ezt el KELL olvasnia)

(***************************************************************************
)
(*
*)
(*    SCAN kodok megallapitasa a modositott billentyuzet-megszakitassal
*)
(*
*)
(***************************************************************************
)
{$G+}
Uses Crt,Dos;
 var
  i:integer;
  Ktb:array[0..127] of boolean; { Billentyuzet lenyomas tablazat }
  oldKey : procedure;
 const
  hh : array[0..15] of char='0123456789abcdef';

 Function Hex(x:byte):String; { DEC->HEX konvert l s }
  Begin hex:=hh[x shr 4]+hh[x and 15]; End;

 Procedure KeyIRQ;Assembler;
  Asm
   push    DS               { A hasznalt regiszterek elmentese }
   push    ax
   push    bx
   push    cx
   mov     ax,SEG Ktb       { Inicializalasok }
   mov     DS,ax
   xor     bh,bh            { BH = 00 }
   mov     cl,bh            { CL = 00 }
   in      al,60H           { A billentyu SCAN kod beolvasasa }
   mov     bl,al            { BL = kod }
   and     bl,7fH           { A lenyomas/felengedes bit kimaszkolasa }
   shl     al,1             { A lenyomas/felengedes bit a Cy-be }
   cmc                      { Negalas }
   adc     cl,00            { Tarolas a tablazatban }
   mov     [bx+OFFSET Ktb],cl
   in      al,61H           { A megszakitas csatorna visszaallitasa }
   mov     ah,al
   or      al,80H
   out     61H,al           { billentyuzet "data acknowledge" jelzes }
   mov     al,ah
   nop                      { Keves varakoz s (soros adatkikuldes) }
   nop
   nop
   out     61H,al
   cli
   mov     al,20H           { 8259 "megszakitas vege" jelzes }
   out     20H,al
   sti
   pop     cx               { Regiszterek vissza a verembol }
   pop     bx
   pop     ax
   pop     DS
   iret                     { Megszakitas vege }
  End;

 BEGIN
  Clrscr;
  );    { A $09 vektor tarolasa }
  );    { A sajat rutin aktivalasa }

                             { Kiirjuk a SCAN kodokat }
  For i:=1 to 127 do write('$'+hex(i),':    ');
  Writeln;Writeln;Writeln;
  Textattr:=$F;
  Writeln(' Kiepes: CTRL-ESC ');
  { Ez a ciklus vegzi a billentyuk lekerdezeset }
  { Minden lenyomott billentyut egy karakterrel jelez }
  Repeat
   For i:=1 to 127 do
    if ktb[i] then memw[$b800:(i-1)*16+10]:=$0edb
              else memw[$b800:(i-1)*16+10]:=$0000;
  Until KTB[1] and KTB[$1D];
  { Kilepes a CTRL-ESC kombinaciora }
  { A $09 vektort visszairja az eredeti ertekre }
  );
 END.
(***************************************************************************
)

U.I. : probaljatok ki dos modban a Ctrl+Alt+Del - t

Tisztelettel NagyI
+ - Re: Logikusan: elvalaszto (mind) VÁLASZ  Feladó: (cikkei)

pascalban vhogy igy (nincs ellenorizve, csak ugy IQ-bol :)

function sorminta( sor,jel : string ) : boolean;
var hibas : integer;
    volt1 : boolean;
;

Udv: Tibor
+ - DOS-os BAT (mind) VÁLASZ  Feladó: (cikkei)

Tisztelt CODER!

Van-e valami magyarazata annak, hogy ha .BAT file-nak a parameterekben ; 
-t (pontosvesszot) adunk, akkor azt o szokozzel helyettesiti?

Peldaul az alabbi program  pp 1;2 -vel inditva 1 -t  ir ki.

pp.bat >

echo %1




                       Aggod Jozsef

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS