/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Linked List funktioner i Win32 API ?
Fra : Per Pedersen


Dato : 17-10-03 22:55

Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner til
kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
Lists".

Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
nedlægge sådanne lister.

Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet navn,
end hvad jeg er vandt til.

Med venlig hilsen

Per Pedersen



 
 
Ivan Johansen (17-10-2003)
Kommentar
Fra : Ivan Johansen


Dato : 17-10-03 23:08

Per Pedersen wrote:
> Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner til
> kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> Lists".
>
> Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> nedlægge sådanne lister.
>
> Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet navn,
> end hvad jeg er vandt til.

Jeg er ikke sikker på hvad det er du søger efter. I C++ findes klassen
std::list til linkede lister. I C bliver du nødt til at håndtere det
selv. Win32 API indeholder ikke noget til håndtering af lister.

Ivan Johansen


Per Pedersen (18-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 18-10-03 04:04


"Ivan Johansen" <ng6@padowan.REMOVE.dk> skrev i en meddelelse
news:bmpp5s$20l3$1@news.cybercity.dk...
> Per Pedersen wrote:
> > Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner
til
> > kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> > Lists".
> >
> > Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> > indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> > nedlægge sådanne lister.
> >
> > Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet
navn,
> > end hvad jeg er vandt til.
>
> Jeg er ikke sikker på hvad det er du søger efter. I C++ findes klassen
> std::list til linkede lister. I C bliver du nødt til at håndtere det
> selv. Win32 API indeholder ikke noget til håndtering af lister.
>
> Ivan Johansen
>

Det er svært at beskrive de her rutiner helt præcist, det ville være en hel
del nemmere, at sende et stykke kode, og især når du ikke har haft med
AmigaOS at gøre, men i store træk tager de sig af at oprette, og
vedligeholde, de nødvendige datastrukturer.

Et eksempel kunne være, at skrive en Task-Monitor, og det kræver, det at
sortere Tasks i 3 lister, en liste med de Tasks, som venter på en hændelse
fra systemet, en liste med kørende Tasks, og endnu en liste med Tasks som er
klar til at køre, og da alle Tasks har en TaskPri variabel, et member af
task-strukturen, så skal de både sorteres, og tildeles processortid, efter
den variabel. Her er det at AmigaOS tilbyder "automatisk" sortering, efter
F.eks TaskPri, når man tilføjer, eller fjerner et nyt element.

Jeg er ikke særligt fortrolig med C++, og klasser, så jeg må jo nok selv
implementere det sædvanlige sæt rutiner, hvilket er en relativ simpel
opgave.

Med venlig hilsen

Per Pedersen
..



Mogens Hansen (18-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 18-10-03 07:35


"Per Pedersen" <perpedersen33@hotmail.com> wrote

[8<8<8]
> ... men i store træk tager de sig af at oprette, og
> vedligeholde, de nødvendige datastrukturer.

Tag et kig på de container-typer og algoritmer der findes i C++ Standard
library.
Det er den del som typisk (lidt upræcist) kaldes STL.

De er nemme at bruge (når man har forstået princippet).
De er type sikre.
De er effektivt implementeret - man skal være skrap og typisk udnytte
særlige egenskaber ved det konkrete problem for at lave noget der er
hurtigere selv.


> Her er det at AmigaOS tilbyder "automatisk" sortering, efter
> F.eks TaskPri, når man tilføjer, eller fjerner et nyt element.

Det løser C++ klassen "std::priority_queue" effektivt, nemt og typesikkert.
Klassen "std::set" og "std::multiset" er også muligheder.

>
> Jeg er ikke særligt fortrolig med C++,

Det var måske et sted at starte.

> og klasser, så jeg må jo nok selv
> implementere det sædvanlige sæt rutiner, hvilket er en relativ simpel
> opgave.

Hmm...
Hvorfor bruge tid på noget der allerede er tænkt over, lavet og testet ?

Venlig hilsen

Mogens Hansen



Per Pedersen (18-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 18-10-03 13:16


"Mogens Hansen" <mogens_h@dk-online.dk> skrev i en meddelelse
news:bmqmk1$9m7$1@news.cybercity.dk...
>
> "Per Pedersen" <perpedersen33@hotmail.com> wrote
>

> Det er den del som typisk (lidt upræcist) kaldes STL.

Lidt upræcist ? hvad mener du med det, eller er det ikke noget jeg skal
bekymre mig om lige nu ?

> De er nemme at bruge (når man har forstået princippet).
> De er type sikre.
> De er effektivt implementeret - man skal være skrap og typisk udnytte
> særlige egenskaber ved det konkrete problem for at lave noget der er
> hurtigere selv.

Det lyder som et rigtigt godt sted at starte, ihvertfald til det project jeg
står foran nu.

> Det løser C++ klassen "std::priority_queue" effektivt, nemt og
typesikkert.
> Klassen "std::set" og "std::multiset" er også muligheder.

Er der et sted hvor den klasse er forklaret, helt ind til benet, (mindre kan
også gøre det), da jeg ikke er meget for at bruge noget, hvis virke jeg ikke
har kendskab til. Det er også derfor jeg gerne vil studere Win32 lidt
dybere, for at få lidt mere forståelse for, hvad det er jeg har med at gøre.

> Det var måske et sted at starte.

Det ser ud til at jeg i sin tid, har kvajet mig godt og grundigt, ved ikke,
også at lære den platformsuafhænnige programmering, men det er jo som sagt,
aldrig for sent at lære noget nyt.

Jeg har vist ikke nævnt tidligere, at AmigaOS ikke i sig selv understøtter
OO, det er da muligt at bruge C++, men assembler outputtet er ikke hvad det
burde have været, og man kan så bruge mange timer på at optimere det
bagefter.

Når man har sagt A, så må man jo også sige B, så nu er det tilbage i
gemmerne, og finde alt hvad jeg har på ++, og så se at få det lært.

> Hmm...
> Hvorfor bruge tid på noget der allerede er tænkt over, lavet og testet ?

Der er som bekendt ikke nogen grund til at opfinde den dybe tallerken 2
gange, så nu må jeg også lige tage mig et grundigt kig på klassebegrebet.

Jeg siger allerede nu, endnu en gang tak for hjælpen.

Mvh

Per Pedersen



Mogens Hansen (18-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 18-10-03 18:15


"Per Pedersen" <perpedersen33@hotmail.com> wrote in message
news:3f912ee9$0$21043$ba624c82@nntp02.dk.telia.net...
>
> "Mogens Hansen" <mogens_h@dk-online.dk> skrev

[8<8<8<]
> Lidt upræcist ? hvad mener du med det, eller er det ikke noget jeg skal
> bekymre mig om lige nu ?

STL var navnet på det bibliotek af containere, algoritmer og iteratorer, som
omkring 1994-95 var fundamentet for de containere, algoritmer og iteratorer
som er en del af C++ Standard Library.
Nej - det er ikke noget man behøver at bekymre sig om. Det er blot nyttigt
at vide hvad man typisk mener, når man snakker om STL.

[8<8<8<]
> Er der et sted hvor den klasse er forklaret, helt ind til benet, (mindre
kan
> også gøre det),

Hjælpesystemet til Microsoft Visual C++ .NET (som du nævnte at du bruger)
har en beskrivelse. Den forudsætter måske at man kender noget til STL i
forvejen.

Men ellers står stort set det eksempel du nævnte beskrevet i bogen
The C++ Programming Language, Special Edition
Bjarne Stroustrup
ISBN 0-201-70073-5
side 478 (samme side i Third Edition)

Men ellers kan der findes udemærkede beskrivelser i
The C++ Standard Library
Nicolai M. Josuttis
ISBN 0-201-37926-0

STL Tutorial and Reference Guide: C++ Programming with the Standard
Template Library , Second Edition
David R. Musser, Gillmer J. Derge, Atul Saini
ISBN 0-201-37923-6

Generic Programming and the STL: Using and Extending the C++ Standard
Template Library
Matthew H. Austern
ISBN 0-201-30956-4

som alle er gode bøger med lidt forskellige indgangsvinkler til C++ Standard
library.
Se iøvrigt www.accu.org for gode reviews af bøger.

[8<8<8<]
> Det ser ud til at jeg i sin tid, har kvajet mig godt og grundigt, ved
ikke,
> også at lære den platformsuafhænnige programmering,

Det er vel udemærket at kende sin platform.

> men det er jo som sagt,
> aldrig for sent at lære noget nyt.

Netop.

>
> Jeg har vist ikke nævnt tidligere, at AmigaOS ikke i sig selv understøtter
> OO, det er da muligt at bruge C++, men assembler outputtet er ikke hvad
det
> burde have været, og man kan så bruge mange timer på at optimere det
> bagefter.

Hmm...
Det lyder ualmindeligt og dårligt.

>
> Når man har sagt A, så må man jo også sige B, så nu er det tilbage i
> gemmerne, og finde alt hvad jeg har på ++, og så se at få det lært.

Et godt råd, hvis man vil lære moderne C++ på en effektiv måde er at starte
med at læse bogen
Accelerated C++, Practical Programming by Example
Andrew Koenig, Barbara E. Moo
ISBN 0-201-70353-X
som er en enestående bog (det er iøvrigt indlæringen der er tilstræbt
accelereret - det er ikke programmerne der er skrevet med henblik på ekstrem
høj performance).

Venlig hilsen

Mogens Hansen



Per Pedersen (18-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 18-10-03 23:18


> Et godt råd, hvis man vil lære moderne C++ på en effektiv måde er at
starte
> med at læse bogen
> Accelerated C++, Practical Programming by Example
> Andrew Koenig, Barbara E. Moo
> ISBN 0-201-70353-X
> som er en enestående bog (det er iøvrigt indlæringen der er tilstræbt
> accelereret - det er ikke programmerne der er skrevet med henblik på
ekstrem
> høj performance).
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Jeg har også læst lidt baglæns i gruppen, og der fundet, en nu efterhånden
meget lang litteraturliste, som det så kommer til at tage lidt tid at få råd
til. Den sidste bog her, den lyder som et godt sted at starte.

Jeg har selv den erfaring med litteratur, at det helst skal lugte lidt af
begynderchikane, for at det rigtigt kommer til at sidde fast, - her tænker
jeg på den første bog jeg havde om C, hvor man først blev lært at skrive
rutinerne selv, med (med overlæg) fejlfyldte eksempler, og når man så
endeligt havde fået fat i det, så blev man fortalt, at der da forresten også
var en C-funktion der kunne det samme. Hvad bogen hedder kan jeg ikke huske
længere, og den er gået i arv siden da.

Med venlig hilsen

Per Pedersen



Klaus Petersen (20-10-2003)
Kommentar
Fra : Klaus Petersen


Dato : 20-10-03 09:04

> Hmm...
> Hvorfor bruge tid på noget der allerede er tænkt over, lavet og testet ?

For at få ny viden og erfaring. Det var ikke meget man kunne kode hvis man
har den holdning. Det meste man kan lave er allerede "tænkt over, lavet og
test".



Per Pedersen (20-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 20-10-03 19:31


"Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
news:bn04tf$iqp$1@sunsite.dk...
> > Hmm...
> > Hvorfor bruge tid på noget der allerede er tænkt over, lavet og testet ?
>
> For at få ny viden og erfaring. Det var ikke meget man kunne kode hvis man
> har den holdning. Det meste man kan lave er allerede "tænkt over, lavet og
> test".
>
>

Hej Klaus

Det har du da fuldstændigt ret i, og mon ikke de fleste har den samme
opfattelse, - håber at du har læst alle indslag i denne tråd, for ikke
ufrivilligt at få trådt nogen over tæerne.

Mvh.

Per Pedersen



Bertel Brander (17-10-2003)
Kommentar
Fra : Bertel Brander


Dato : 17-10-03 23:15

Per Pedersen wrote:
> Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner til
> kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> Lists".
>
> Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> nedlægge sådanne lister.
>
> Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet navn,
> end hvad jeg er vandt til.
>

Win32 API'et indeholder ingen funktioner til linkede lister.

STL (standard C++ bibliotek) indeholder en række list templates,
f.ex list, set, map.

MFC har også nogle class'er som f.ex CList.

/b


Per Pedersen (18-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 18-10-03 04:08


"Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
news:3f90692d$0$45355$edfadb0f@dread11.news.tele.dk...
> Per Pedersen wrote:
> > Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner
til
> > kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> > Lists".
> >
> > Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> > indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> > nedlægge sådanne lister.
> >
> > Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet
navn,
> > end hvad jeg er vandt til.
> >
>
> Win32 API'et indeholder ingen funktioner til linkede lister.
>
> STL (standard C++ bibliotek) indeholder en række list templates,
> f.ex list, set, map.
>
> MFC har også nogle class'er som f.ex CList.
>
> /b
>

Det vil jeg da liger tage mig et kig på, men som jeg har svaret Ivan
Johansen, så er det nok lettere for mig at implementere det kendte system,
hvis opbygning og virke, er meget grundigt beskrevet i RKRM manualerne til
AmigaOS.

Med venlig hilsen

Per Pedersen



Leo Havmøller (20-10-2003)
Kommentar
Fra : Leo Havmøller


Dato : 20-10-03 06:50

"Per Pedersen" <perpedersen33@hotmail.com> wrote in message
news:3f906507$0$14621$ba624c82@nntp05.dk.telia.net...
> Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner
til
> kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> Lists".
>
> Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> nedlægge sådanne lister.
>
> Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet
navn,
> end hvad jeg er vandt til.

De mest almindeligt brugt i C er InitializeListHead mv.
http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/k109_7zua.asp
De er dokumenteret i kernel-mode, men findes både i user-mode og kernel-mode
(det er bare en flok macroer).

Leo Havmøller.



Per Pedersen (20-10-2003)
Kommentar
Fra : Per Pedersen


Dato : 20-10-03 19:39


"Leo Havmøller" <leh@-nospam-rtx.dk> skrev i en meddelelse
news:3f937794$0$9757$edfadb0f@dread14.news.tele.dk...
> "Per Pedersen" <perpedersen33@hotmail.com> wrote in message
> news:3f906507$0$14621$ba624c82@nntp05.dk.telia.net...
> > Jeg har forgæves stået på hovedet i MSDN, for at finde hjælpefunktioner
> til
> > kædede lister i Win32 API, men forgæves, eller ? Jeg har søgt på "Linked
> > Lists".
> >
> > Jeg har som tidligere nævnt, programmeret på AmigaOS, hvor Exec.library
> > indeholder et sæt formidable rutiner, til at, oprette, vedligeholde, og
> > nedlægge sådanne lister.
> >
> > Hvis de findes, hvad skal jeg så søge efter, de kunne jo have et andet
> navn,
> > end hvad jeg er vandt til.
>
> De mest almindeligt brugt i C er InitializeListHead mv.
> http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/k109_7zua.asp
> De er dokumenteret i kernel-mode, men findes både i user-mode og
kernel-mode
> (det er bare en flok macroer).
>
> Leo Havmøller.
>
>

Hej Leo

Takker for linket, hvem skulle da også kunne vide, at en for mig så
almindelig ting som lister, skulle findes i Driver Development Kit, ikke
just logisk, eller ?

Mvh
Per Pedersen



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste