DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > Hilfe bei Catalogen !! | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2003-12-02, 11:28 h JensB Posts: 193 User |
Hi, habe ein Problem beim öffnen von Catalogen . Die Library läßt sich ja noch öffnen aber beim Catalog ist dann schluß ,dann bleibt er einfach an der Stelle stehen . Muß dazu sagen das beispiel hab ich mal nur schnell aus dem Kopf eingtipt .So hatte ich es auch in E damals geöffnet. Noch was,MUI ist da auch noch im Spiel. Bevor jetzt jemand sagt such doch mal im archiv ,hab i schon, grins. Und mit CatComp will ich nicht da ich das Grundlegende begreifen will. #include <libraries/locale.h> #include <proto/locale.h> #include <......... ..................> struct LocaleBase *localbase=NULL; struct Catalog *mycatlog =NULL; void main() { // hier vor sind noch intuition,dos,muimaster und utiltiy libraries if (!(localbase=(struct Library *)OpenLibrary("locale.library",37)) {fehler(OPENLIB);} // und hier is schluss ,SnoopDos sagt dann nur noch ca. 500x FindSem.... ,der Catalog wird garnicht erst versucht zu öffnen mycatalog=OpenCatalog(NULL,"test.catalog",NULL); if (mycatalog) CloseCatalog(mycatalog); if (localbase) CloseLibrary(localbase); } Ich hoffe ihr könnt mir da Helfen ! Mfg JensB [ - Answer - Quote - Direct link - ] |
2003-12-02, 12:05 h thomas Posts: 7718 User |
Eigentlich funktioniert das so. Die einzige Anmerkung ist, daß die Variable für LocaleBase wirklich exakt "LocaleBase" heißen muß und nicht localbase oder irgendwas anderes. Aber das müßte der Compiler schon bemängeln, deshalb hast du das vermutlich richtig gemacht. Hier ist das Programm, das definitiv funktionier (habe ich gerade ausprobiert): code:#include <libraries/locale.h> #include <proto/locale.h> #include <proto/exec.h> struct Library *LocaleBase=NULL; struct Catalog *mycatalog =NULL; void main (void) { if (LocaleBase=(struct Library *)OpenLibrary("locale.library",37)) mycatalog=OpenCatalog(NULL,"test.catalog",NULL); if (mycatalog) CloseCatalog(mycatalog); if (LocaleBase) CloseLibrary(LocaleBase); } Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
2003-12-02, 12:13 h JensB Posts: 193 User |
Danke ,werds mal Probieren ! Ähm das mit der LocaleBase/localbase hat er ja bemängelt und zwar das die LocaleBase schon mal deklariert ist und zwar in (glaub ich jetzt) proto/locale.h und deswegen bin ich ausgewichen. Jep geht ! Noch ne andere Frage ! Woher weiß ich denn wie ich die Library am anfang deklarieren soll. So, struct LibraryBase *LibraryBase=NULL; oder so, struct Library *LibraryBase=NULL; Es ist in Beispielen immer anders ,mal so und mal so. Mfg JensB [ Dieser Beitrag wurde von JensB am 02.12.2003 editiert. ] [ - Answer - Quote - Direct link - ] |
2003-12-02, 12:35 h thomas Posts: 7718 User |
Am besten deklarierst du sie als void *XyzBase; Das erinnert dich daran, daß die Library-Base eine Black-Box ist, die dich nichts angeht. Wenn du Felder der Library-Struktur auslesen mußt, z.B. die Version, dann kannst du sie als struct Library deklarieren. Und wenn du Felder auslesen mußt, die zu dieser speziellen Library gehören, dann mußt du sie als struct XyzBase deklarieren. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
2003-12-02, 12:40 h tokai Posts: 1071 User |
Zitat: grundsätzlich funktioniert "struct Library *LibraryBase=NULL;" allerdings haben einige Libraries erweiterte Möglichkeiten: code:struct SomeLibraryBase { struct Library LibNode; /* now some additional extra data */ ULONG blabla; struct blabla bla; ... } Und mit SomeLibraryBase = (struct SomeLibraryBase *)OpenLibrary() erhälst du so auch gleich einen Zeiger auf die erweiterten Daten, den du mit der normalen Methode nicht erhalten würdest. Normalerweise sind das die Libraries, die auch ein extra Verzeichnis bei den OS includes haben (also die, die nicht mit in den allgemeinen libraries/ reingepackt wurden z.B.: intuition, exec, etc. -> struct IntuitionBase, struct ExecBase, etc. regards, tokai -- http://www.christianrosentreter.com IRC: #amiganews.de @ARCNET (e.g. de3.arcnet.vapor.com/ port 6667) [ Dieser Beitrag wurde von tokai am 02.12.2003 editiert. ] [ - Answer - Quote - Direct link - ] |
2003-12-02, 13:22 h gni Posts: 1106 User |
Zitat:APTR XyzBase ;-) Bei lokalen Librarybasen ist der Typ egal. Wenn ich nichts aus der Basis brauche, dann nehme APTR. Bei globalen Symbolen wirds schon schwieriger, da man da schnell Typ Konflikte bekommt. [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Hilfe bei Catalogen !! | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |