----> CODERS.GER-MAG 4/98 <---- [============================================================================] Editorial [============================================================================] Hi ihr Demoianer :) Hier ist also die Ausgabe 4/98 vom Coders.ger Magazine. Die in der letzten Ausgabe angekuendigte Homepage ist jetzt online. Viele von euch waren schon da. Wenn ja schaut doch einfach nochmal vorbei es aendert sich staendig was Wenn nicht dann habt ihr erst recht nen Grund auf HTTP://www.codersger.ml.org vorbei zuschauen. Zum Inhalt : Unser ASM Kurs von Adok verabschiedet sich in dieser Ausgabe von euch. Ich hoffe er hat euch gefallen. Vieleicht findet sich fuer naechste Ausgabe jemand der eine kleien Unix-Einfuehrung schreibt (meldet euch !!!). Ausserdem versuch ich Melcom dazu zu uebereden uns was ueber CGI-Scripte "zu erzaehlen":). Reingeschaut und Mitgemacht !!! cu bj/MAG_TEAM [============================================================================] Inhalt [============================================================================] *[I1]* LESERBRIEFE : *[L1]* NEWS : Buisness News *[N1]* Scene News *[N2]* Mekka Results *[N3]* #CODERS.GER : Coders.ger Mag abonnieren *[C1]* Das Mitmach Mag / Artikel einsenden *[C2]* JOKES : Ich habe fertig *[J1]* NET CORNER : LiNKS *[W1]* TIPS&TRICKS : Schoenere Desktop Symbole *[T1]* Zeitbeschränkungen aufheben *[T2]* Mailgroesse Beschraenken *[T3]* KURSE : 3D Kurs (Teil 1) *[K1]* Hugi Assembler KURS (Teil 6) *[K2]* C Kurs Teil 8 Zeiger *[K3]* -----------------------------------------------------------------------------/ [============================================================================] Leserbriefe [============================================================================] *[L1]* Leser : Hey, Editors... nachdem untenstehendes zuerst einmal bouncte, weil the_coders.ger_mag@usa.net -> The_mighty_Asp@t-online.de, und dieser 'unknown user / Teilnehmer existiert nicht', versuche ich es nocheinmal. Hier mein Feedback, hoffentlich konstruktiv genug: Die Links sind relativ häufig falsch - die unter den Kurzmeldungen bzw den EMail-Forwardern URLs passen nicht zum darüberliegenden Text. Nicht selten ist auch einfach die darüberliegende URL kopiert worden. (ok, ich habe sie nicht getestet - erscheint aber unglaubwürdig, daß sie stimmen :) Adoks Asm-Kurs (ich send das mal an euch): 1) ein Abschnitt wurde wiederholt 2) das... > Über den Port 60h kann man den Scancode der gerade gedrückten Taste ablesen. > Der Scancode ist eine Zahl zwischen 0 und 127 (7 Bits). Ist Bit 8 gesetzt, so > wird momentan keine Taste gedrückt. Die unteren 7 Bits enthalten dann den > Scancode der zuletzt betätigten Taste. ...ist leider falsch. Bits numeriert man von 0 bis 7 - Bit 8 liegt im zweiten Byte. (ich würde 'das achte Bit sagen für Bit 7) Die Scancodes enthalten nur 7 Bits, das achte gibt an, ob die Taste gedrückt (=0) oder losgelassen (=1) wurde. Wird die Taste anscheinend gedrückt, wurde aber zwischen drin noch nicht losgelassen, so ist dies die Repeat-Funktion, die vom Tastatur-Prozessor generiert wird. Port 60h ändert sich nur, wenn ein Signal von der Tastatur kommt - es wird dann btw auch Int9 aufgerufen. Ist beim Auslesen Bit 8 gesetzt, so handelt es sich also genaugenommen um den Scancode der Taste, die zuletzt losgelassen wurde. (sorry falls zu penibel - aber imho muß man schon genau wissen, was abgeht, wenn man sich in Asm versucht) Eine Anmerkung zu den Inline-Asm (für mindestens TP6): will man Funktionen aufrufen, die Datenpuffer in DS erwarten, oder kann man ein wichtiges Register wie z.B. SP nicht in einen anderen Register speichern, so kann man das Codesegment dafür benutzen: asm push ds push cs pop ds lea dx, @bla mov @sp_save, sp int xy mov sp, @sp_save pop ds jmp @out @bla: db 'CodersGerMag' @out: end; TP erlaubt in Asm-Abschnitten vorher nicht deklarierte Labels, wenn sie mit dem @ (At, Klammeraffe, Krüppelzeichen) anfangen. das hier > #CODERS.GER : > Coders.ger Mag abonieren *[C1]* > Das Mitmach Mag / Artikel einsenden *[C2]* gehört imho ans Ende des Mags, nicht zwischenrein. Die Idee mit den [index]-Pseudo-Links finde ich gut. Gibt es eigentlich einen regelmäßigen Erscheinungsrhythmus? (ist meine erste Ausgabe) Wenn ja - gibt es, ähnlich dem leider verstorbenen demonews, einen Reader für Dos? (wenn nein - bestünde Interesse daran?) Schön fände ich es auch, wenn ihr versuchen würdet, sinnvolle Aufgaben der demonews zu übernehmen - so z.B. den Event-Kalender. Das war's jetzt erstmal von mir. Muss gleich mal raussuchen, ob ich nicht doch schon die letzte Ausgabe habe, der C-Kurs interessiert mich ;) btw: das Fido-Echo demo.code.ger wollte auch irgendetwas zusammenstellen, eine Faq, ein Mag, Tutorials oder irgendwas. Ist noch nicht ganz fest, aber ich hab vorgeschlagen, doch einfach hier mitzumachen. Ich hoffe, ihr habt nichts dagegen, wenn ich das Mag ins Fido-Echo puste... Bye, Trickser... Redaktion: Hi Trickser Erstmal Danke fuer deinen Brief. Danke fuer deinen Brief. Erst mal zum bouncen : Asp Mail hat sich geaendert und ich hatte vergessen das im Redaktion-Verteiler zu aendern - sorry ... Zu 2. : Du beziehst dich wohl auf unser Kostenloses Email Special aus Ausgabe 3/98. Ich hab nochmal drueber geschaut und wirklich nen Fehler gefunden. Bei Uni.de steht der falsche Text. Ich denke das das genau wie der Doppel Fehler im ASM Kurs beim zusammen pasten von den einzelnen Artikel zum Mag passiert ist. Hiermit Bitte ich dich dafuer um Verzeihung ... Ich mach nur MIST :( Auf unserer Homepage im Internet kannst du alle Ausgaben unseres alle 1 - 2 Monate erscheinenden Mags anschauen. (von 1/97 bis 4/98) Leider gibt es noch keinen Reader :( Und das mit dem Event-Kalender sollte eigentlich unter News Scene News stehen. Wir suchen noch jemand der sich bereit erklaert jeden Monat diesen Kalender zusammezustellen ... Nochmals danke fuer deinen Brief [BJ/DesirE] -----------------------------------------------------------------------------/ [============================================================================] +++ News +++ News +++ News +++ News +++ News +++ [============================================================================] *[N1]* ---=== b u s i n e s s n e w s ===--- --[Netscape veröffentlicht nun doch den Navigator-5.0-Quelltext]-------------- Die Firma Netscape hat zum 31.März den Quelltext ihres neuen Navigators veröffentlicht. Unter der unten angegebenen URL hat von nun an jeder Zugriff auf die Sourcecodes für Macintosh, Unix und Windows. Unter derselben URL finden sich auch Hinweise zum Compilieren des Codes in ein lauffähiges Programm. Netscape weist ausdrücklich darauf hin, daß der publizierte Quelltext noch eine sehr instabile Version und nur für Entwickler gedacht sei. Neu und "heiß" http://www.mozilla.org/download.html -----------------------------------------------------------------------------/ --[Internet-Explorer-Baukasten]----------------------------------------------- In knapp 2 Wochen ist es soweit: Microsofts Internet Explorer 5.0 erscheint als Beta-Version. Allen Befürchtungen zum Trotz, hat das Download-File nicht über 20 MByte Größe, sondern kommt als modulares Baukastensystem daher. Je nach Bedarf kann sich der Interessent den Browser separat installieren und auf Wunsch jederzeit ergänzen. Nach Angaben von Microsoft, ist selbst die Java Virtual Machine nicht zwingend; Sun wird das weniger freuen. Hier wird es bei Verfügbarkeit stehen http://www.eu.microsoft.com/germany/internet/ie/ -----------------------------------------------------------------------------/ --[Windows 98 unterstützt Intercast]------------------------------------------ Seit geraumer Zeit arbeiten Microsoft und Intel gemeinsam an der Konvergenz von TV, Web und PC. In Windows 98 soll Intels Intercast-Software in Microsofts Web-TV-Funktion integriert werden. Durch die Verschmelzung der beiden Applikationen erlaubt es das Betriebssystem, TV-Programme auf der Windows- Oberfläche anzuzeigen. Durch die Integration der Intercast-Software können zusätzlich zum TV-Bild auch Daten aller Art - wie z.B. Programmänderungen - per Browser angezeigt werden. Eigentlich nichts neues: Schon jetzt ist jeder User, der über eine TV-Tuner-Karte verfügt, in der Lage, TV-Programme in Windows anzuzeigen - in guter Qualität. Nur die kostenlosen Internet-Daten per Intercast fehlten bislang. Alles über Intercast http://www.intercast.com/ -----------------------------------------------------------------------------/ --[Stirbt der Pentium MMX?]--------------------------------------------------- Nur noch vereinzelt bieten Händler ihre Restlagerbestände an MMX-Prozessoren an. Der Pentium II ist auf dem Vormarsch, die MMX-Prozessoren haben drastisch an Interesse eingebüßt. Zum Ende dieses Jahres, das erwarten Marktforscher, soll der Pentium II einen Marktanteil von 75 Prozent erreichen. Überdurchschnittliche Geschwindigkeit und ein moderater Preis der neuen CPU sind die Gründe. Neues von Intel http://www.pentium.com/home/PentiumII/index.htm -----------------------------------------------------------------------------/ --[Billig-Chip Celeron zu langsam?]------------------------------------------- Der zu Beginn des Jahres von Intel vorgestellte Billig-Chip "Celeron" scheint die in ihn gesetzten Erwartungen nicht zu erfüllen. Verschiedene Tests haben bestätigt, daß die CPU trotz 266 MHz-Taktrate dem Vorgänger mit nur 200 MHz und integriertem Secondlevel-Cache nicht das Wasser reichen kann. Um das Geschwindigkeitsproblem zu beseitigen, will Intel Anfang 1999 mit Hilfe eines neuen Busdesigns dem Celeron zu einem Bustakt von über 100 MHz verhelfen. Alles neue zum Celeron http://www.intel.com/celeron/home.htm -----------------------------------------------------------------------------/ --[Photoshop 5: Grafikrausch für Experten]------------------------------------ In ein paar Tagen will Adobe bei allen Grafikern für aufgerissene Augen und leere Brieftaschen sorgen: Photoshop 5 soll Anfang Mai in den USA ausgeliefert werden. Deutsche Kunden müssen auf eine nationale Version noch ein wenig länger warten. Zu den Highlights gehören ein verbessertes Texthandling und eine UNDO-History. Damit lassen sich beliebig viele Schritte wieder rückgängig machen. Ach ja: ein paar neue Standard- werkzeuge gibt es auch noch. Neu und heiss http://www.adobe.de/products/photoshop/pshopnew.html BetaVersion zum downloaden (hmmmm schön.... :) ) ftp://ftp2.jasc.com/psp5b3_0.exe "8251kb" - http://www.jasc.com/psp.html -----------------------------------------------------------------------------/ --[Bleibt das Internet zollfrei?]--------------------------------------------- Die US-Regierung macht sich schon länger dafür stark, daß der Handel im Internet nicht durch Zölle und Abgaben belastet werden soll. Am 19. Mai wird sich nun die Welthandelsorganisation in Genf treffen und die Vorschläge der USA beraten. Das von Präsident Clinton angestrebte Abkommen soll vor allem Käufe, die ausschließlich via Internet getätigt werden billiger machen. Darunter würden dann Software per Download, Musikfiles, Online-Videos usw. fallen. Bestellungen, die im Internet getätigt, aber auf herkömmlichem Weg geliefert werden, sind davon ausgenommen. Alles zur US-Regierung http://www.whitehouse.gov/WH/Welcome.html -----------------------------------------------------------------------------/ --[DOS-Browser für Standardrechner]------------------------------------------- Ein tschechisches Unternehmen hat seine Alternative zu den derzeit üblichen umfangreichen Browsern (z.B. IE4.0/12MB) vorgestellt. Sie erlaubt auch einem kleinen DOS-Rechner, den Weg ins multimediale Internet zu finden. Arachne, so der Name des minimalistischen DOS-Browsers, benötigt lediglich einen 8086-Prozessor mit 410 KB DOS-Speicher und eine EGA- oder VGA-Karte. Der Browser unterstützt zwar kein Java, jedoch die gesamte HTML 4.0- Spezifikation. Browser laden und staunen http://www.naf.cz/arachne -----------------------------------------------------------------------------/ --[Hacker knacken Sicherheitscode von Eliteeinheit]--------------------------- Mehreren unbekannten Personen ist es gelungen, in das Rechnersystem der Eliteeinheit der amerikanischen Streitkräfte, dem "Special Operations Command" (Socom), einzudringen. In letzter Zeit häufen sich Meldungen dieser Art: Oft handelt es sich nur um Freaks, die ihr Können unter Beweis stellen, oder auf Sicherheitslecks aufmerksam machen wollen. Das Pentagon nimmt die jüngsten Vorkommnisse ernst und hat sich jetzt entschlossen, zusammen mit Regierungsbehörden nach neuen und effizienteren Sicherungsmethoden zu suchen. Das Pentagon http://www.defenselink.mil/ -----------------------------------------------------------------------------/ --[Virtual-Cops räumen auf]--------------------------------------------------- Die Firma Network Associates (NAI) präsentiert nach den jüngsten Hacker- Vorfällen ein neues Programm namens "CyberCop". Es soll Störungen und unerlaubte Zugriffe im Netzwerk in Echtzeit erkennen. Bevor es Hackern oder internen Eindringlingen möglich wird, Daten zu stehlen oder zu beschädigen, meldet das Programm den unerlaubten Zugriff dem Netzwerkadministrator. Wehe, wenn der Angriff nachts erfolgt und alle Verantwortlichen schlafen... Neuer Netzwerk-Cop http://www.nai.com/ -----------------------------------------------------------------------------/ --[Upgrade für Windows 98]---------------------------------------------------- Wie bei Windows 97 gibt es zusätzlich zum Betriebssystem Windows 98 ein Pluspack. Unter den Features: ein Virenscanner von McAffee, der File Cleaner von Cybermedia, Microsofts Picture-It, ein Programm zur Verwaltung des Startmenüs sowie ein Dateikompressionsprogramm. Zusätzlich werden verschiedene grafische Erweiterungen wie Bildschirmschoner, Hintergründe und auch Sounds enthalten sein. Laut Microsoft soll das Upgrade "schlappe" 100 Mark kosten. Microsofts Windows 98 http://www.eu.microsoft.com/germany/windows98/ -----------------------------------------------------------------------------/ --[Nein zu Windows 98]-------------------------------------------------------- Ende letzter Woche meldeten CNN und PCWeek, daß sich die Justizminister mehrerer US-amerikanischer Bundesstaaten öffentlich gegen den Erscheinungs- termin von Windows 98 ausgesprochen hätten. Sie wollen die Veröffentlichung des neuen Microsoft-Betriebssystems solange hinauszögern, bis das laufende Verfahren gegen Microsoft abgeschlossen ist. Ganz anders eine Interessengruppe amerikanischer Großkonzerne: Die verspätete Auslieferung von Windows 98 könne negative Auswirkungen auf die amerikanische Industrie haben. Zu den Unterzeichnern des Schreibens gehören verantwortliche Mitarbeiter von Intel, Dell, Hewlett Packard, Sony und AMD. Alles neue bei CNN http://www.cnn.com/ -----------------------------------------------------------------------------/ --[Mailingliste *Free]-------------------------------------------------------- Wenn Ihr fuer Eure Website eine eigene Mailingliste einrichten wollt, hilft Euch "ListBoot" von Submit it! weiter. Die Installation ist so einfach wie das einfuegen einiger HTML Zeilen in eure Web site. ListBoot http://www.listbot.com -----------------------------------------------------------------------------/ *[N2]* ---=== s c e n e n e w s ===--- --[SCENE.NET OFFERS NEWS SERVER!]--------------------------------------------- Demoscene staple Scene.org, who hosts the home pages of such scene greats as m0n0, Five Musicians and Phase^D to name a few, is now offering a dedicated news server for the demoscene. Scene.org has been offering an IRC server for the demoscene for a while now, and this week is the debut of the News Server, news.scene.org. Simply set "news.scene.org" as the news server in your news reader and scan for the channels. There is no username or password required. Scene.org currently offers channles on the scene in general, trax, graphics, parties and software. Thumbs up to Scene.org for offering this great service! Scene.Org http://www.scene.org/ -----------------------------------------------------------------------------/ --[MODARCHIVE BACK IN BUSINESS]----------------------------------------------- After a period of downtime, the MOD Archive is now back in operation. Their New Directory shows the period quite clearly, with no releases added to the archive between April 28th and May 1st. The webmasters of the Archive could not be reached for comment, but it is my suspicion that they were simply doing some needed rearranging of the files. Many people have been using the MOD Archive's Random MOD Script as background music for their personal web pages, and may have experienced some problems during this period. For now, all appears to be back to normal. ModArchive http://www.modarchive.com/ -----------------------------------------------------------------------------/ --[Coders.ger HP Update]------------------------------------------------------ die cg-online homepage hat eine neue seite [THE SCENE] bekommen. auf der seite [THE SCENE] koennt ihr nun all eure neuen sachen sprich: "music, demos, grafiken, mags, kurse, spiele, programme usw...." oeffentlich bekannt machen (wenn ihr der meinung seid, "das muss die welt gesehen haben"). es stehen gerade "jetzt" 2 sachen dort und wir wuerden uns sehr freunen wenn ihr mitmacht und uns einfach links zu den programmen schickt, die ihr in den letzen tagen gecodet, getrackt oder aehnliches habt. sollten diese seiten gut laufen, koennten wir diese seite noch richtig schoen ausbauen. ideen haben wir genug. also leute... legt los.... :) ach ja, comments/ideen eurer seits, sind immer herzlich willkommen. ps: bitte noch keine aelteren sachen posten. ich wuerde vorschlagen alles was nicht aelter als 3 monate ist oder so... (vorerst) CG-Online http://codersger.home.ml.org -----------------------------------------------------------------------------/ *[N3]* ----[MEKKA RESULTS TOP 5 PC]------------------------------------------------- MUSIK : XM 01 My Style - My Beat EHa/Smash Designs 02 Gaia's Child Velvet/Amable,TDR 03 Too Creamy Pink/Abyss & Mitch 04 File Fight Calandrian/TOM/De-ca Dance 05 Teamwork Virgill/Haujobb MOD 01 Discoking Maniac+Shane/Crux 02 Bandura Muffler/Haujobb 03 Into the Iris Notman/IRIS 04 Solar Systems Skyrunner/Apocalypse 05 Manhattan Marc/Haujobb^Sector7 DEMOS : Demos 01 The Fulcrum Matrix 02 Startrail To Glory Abyss 03 Dimension Darkage 04 SHM The Lopez Bros. 05 Dreams of Destiny Suburban Creations Graphic 01 Hänsel&Gretel im Paradies des blutigen Todes Cyclone/Abyss 02 Blöder Vochel! Nazgul 03 Fantasy Peachy/Haujobb 04 Oppa geht ficken Acryl/Scoopex 05 8 bits are enough T.G.I./Brainfart audiovisuals Game 32K 01 Giana 32K Myth 02 Rise of the Rabbits 2 Pink/Abyss 03 A-Type Dexter+Pink/Abyss 04 Splat! mac/mmu 05 Game Thousand Islands -----------------------------------------------------------------------------/ [============================================================================] #Coders.ger [============================================================================] *[C1]* --[Coders.ger Mag abonieren]-------------------------------------------------- Wie ihr sicher schon wisst haben wir eine Webseite eingerichtet. Dort koennt ihr unter anderem alle alten Mag lesen und das Mag abonnieren. Natuerlich koennt ihr das Mag auch weiterhin bei The_Coders.ger_Mag@usa.net einfach per Mail bestellen : Subject : give me the mag, or die Body : Emailaddresse -----------------------------------------------------------------------------/ *[C2]* --[Das Mitmach Mag/Artikel einsenden]----------------------------------------- Du/Ihr findet das Mag toll/beschissen/verbesserungsfaehig/schlecht/etc. ... Dann helft uns das Mag noch zu verbessern. Das Coders.ger Mag ist ein Mitmach Mag. Bei uns kann jeder (soll sogar) einen Artikel schreiben, Links einsenden, Leserbriefe, Interviews etc. ... . Und wir haengen das ganze dann alle 1-2 Monate zum Mag zusammmen. Also ohne deinen/euren Artikel siehts im Mag oede/eintoenig/langweilig/... aus und wir muessen unsere tolle Idee vom erstren IRC Channel Mag einstellen ... Also losgetippt und wenns nur ein Link ist den du letzte Nacht gefunden hast ... oder schreib doch einen Leserbrief ... Infos ueber ne Demoparty die du/ihr gerade organisierst (bitte ca 3 Monate vorher) fuer die Scene News ... Am liebsten ist uns natuerlich wenn du Lust haettest nen groesseren Artikel oder sogar einen kleinen Mehrteiler (Kurs) zu schreiben. Wie zb. unser C, oder Asm Kurs. Interresannt waehre hier z.b. Webcreartion, oder was ueber einen/ mehrere GFX Effekte, Soundkarten coding , Unix , ... [Wir hatten schon lange keine Jokes, oder Ascii Cartoons mehr :(] Wir freuen uns auf deine Beteiligung. Mehr Infos unter unserer Email-addresse (s.u.) [Wenn ihr die Artikel unserm Design etwas anpassen koenntet (72 Zeichen,usw.) koennen wir uns mehr neuen Artikeln usw. widmen ... danke !] Artikel an : The_Coders.ger_Mag@usa.net oder : HTTP://www.codersger.ml.org P.S.: Die Artikel sollten in der Form in der ihr sie uns Schickt frei kopierbar sein. Ausserdem koennen wir aus rechtlichen Gruenden z.b. keine Cracking-Tips oder Warez-Links und aehnliches veroeffentlichen. -----------------------------------------------------------------------------/ [============================================================================] Jokes [============================================================================] *[J1]* --[Ich habe fertig!]---------------------------------------------------------- Ein Wutausbruch, der noch lange zitiert werden wird. Bayern-Muenchen-Trainer Giovanni Trappatoni "hatte fertig" und einige sind auf der suche nach Mitt- schnitten der Pressekonferenz und dem "Trappatoni Rap". Text und Bilder http://www.home.ch/~spaw1060/fun/ Soundfiles und Rede http://www.swf3.de/cgi-bin/comixbase/comix.pl?beitraege http://www.swf3.de/comixbase/beitraege/trapattoni.wav -----------------------------------------------------------------------------/ [============================================================================] Net Corner [============================================================================] *[W1]* ---=== LiNKS ===--- Name: Tips and Tricks Link: http://www.tips-tricks.com/ Description: Tips, Tricks, How to, and Beyond. Web design resource, guide, and tutorials. Name: Freewarepage Link: http://www.freewarepage.de/ Description: Freeware kann das Leben für so manchen Computerfreak leichter machen und schont noch dazu den Geldbeutel. Und hier gibbet so einiges... also gleich mal besuchen! Name: Suspect records Link: http://www.tande.com/sr Description: The tracking subsection of sdi, ausgewählte sounnder - saubere Tracks Name: Suspect (sdi) Link: http://sdi.demo.org Description: Demo/Gfx Group Name: neithernor1998 party Link: http://neithernor.demo.org Description: August.1998/SouthGermany Name: Mekka & Symposium Party'98 (results/releases) Link: ftp://skynet.stack.nl/pub/demos/ms98/ Description: MS'98 Party Releases Name: DefCoN Mag! Link: http://www.citeweb.net/defcon/ Description: Magazin und ChipCompo. (sehr schoene ad.) Name: Hugi-Compo'98 Link: http://www.citeweb.net/defcon/ Description: Size-Coding-Competition fuer alle AssemblerProgrammierer. Name: Alpha64's Mod Archives Link: http://martinet.simplenet.com/ Description: MOD archiving and promote mod music to the public. Name: Ultimate Music Archive Link: http://www.jmusic.com Description: Another large tracker music archive, with contests. Name: Dope 4 Nation Link: http://d4n.home.ml.org Description: Another nice music group. Name: Frei zugaengliche Newsserver! Link: http://www.kleverland.de/newsserver.htm Description: haaa, schoen... endlich freie newsserver. und einige funzen sogar. :) der newsserver "magpie.cat.net.th" ist ganz gut. -----------------------------------------------------------------------------/ [============================================================================] Tips & Tricks [============================================================================] *[T1]* --[Schoenere Desktop Symbole]------------------------------------------------- Fuer Optik-Fanatiker hier ein kleiner Tip, wie sich die Symbole auf dem Desktop etwas verschoenern lassen. Durch eine klitzekleine Aenderung in der "REGEDiT.EXE" koennen die unschoenen Verknuepfungspfeile an den Symbolen abge- schaltet werden. Im Schluessel "HKEY_CLASSES_ROOT" werden die Unterverzeich- nisse "lnkfile" und "piffile" gesucht. In jedem wird der Wert "IS SHORT-CUT" geloescht. Danach die "REGEDiT.EXE schliessen. Nach dem Neustart der Maschiene oder einem Druck auf "F5" verschwinden die Pfeile - die Symbole sehen deutlich besser aus. Will mann die Pfeile wiederhaben, bruachen die Werte nur wieder an den entsprechenden Stellen eingesetzt werden - fertig! Hinweis: Die "REGEDiT.EXE" ist eine sehr heikle und wichtige Windows-Datei. Wird hier ein Felher gemacht, ist das System nicht mehr korrekt oder im schlimmsten Falle gar nicht mehr funktionsfaehig! Daher sollte jeder selber wissen, ob er sich an die Anderungen in dieser Datei heranwagt oder nicht!" Ausserdem sollte der Nachteil an der Sache nicht verschwiegen werden: Es ist nach dieser Aenderung nicht mehr auf den ersten Blick am Symbol zu erkennen, ob es sich nun um eine Datei selbst oder eine eurer Verknuefungen handelt - daher VORSiCHT beim Loeschen und Kopieren von Dateien. -----------------------------------------------------------------------------/ *[T2]* --[Zeitbeschränkungen bei Shareware oder BETA Versionen aufheben]------------- Das Programm "DKILL95" dient dazu, Zeitbeschränkungen bei Shareware oder BETA Versionen aufzuheben. Bei vielen Programm-CD's ist die Testphase oft abgelaufen. Mit dieser Sofftware kann man solche Programme wieder lauffähig machen, ohne jedesmal die Systemzeit ändern zu müssen. Downloadhinweis: Es gibt zwei Versionen - das gössere Programm (902 KB) besitzt eine Installationsroutine, wie es bei fast allen Win95-Programmen üblich ist. Das kleinere (291 KB) ist ein eigenständiges Programm, welches in einen Ordner entpackt werden sollte und eine zusätzlich eine Verknüpfung erstellt werden muss. Im Programmablauf arbeiten beide aber völlig identisch. Wer die Intallationsroutine nicht braucht und eine kurze Downloadzeit bevorzugt, kann das kleinere Programm nehmen. Wichtig: DKill soll nicht dazu dienen, den Sharewaregedanken zu untergraben oder die Registrierung von Programmen zu verhindern. 1. Dkill - Installationsversion (902 KB) http://twister.imf.tu-freiberg.de/files/dkinst.zip 2. Dkill - Version ohne Installationsroutine (291 KB) http://twister.imf.tu-freiberg.de/files/dkill95.zip -----------------------------------------------------------------------------/ *[T3]* --[Mailgroesse Beschraenken]-------------------------------------------------- gibt es eine moeglichkeit, die groesse der eingehenden e-mail beim netscape communicator zu beschraenken ? meli, ich bin doch neu :) Ja, der E-Mail-Client des Netscape Communicators bietet die moeglichkeit, die Groesse der eingehenden E-Mail-Nachrichten zu beschraenken. Auf diese Art und Weise kannst Du dich vor "MailBomben" schuetzen. 1. Fuehre den Menuebefehl "Bearbeiten -> Einstellungen" aus. 2. Oeffne die Kategorie "Erweitert" das Einstellungblatt "Speicherplatz". 3. Aktiviere das Kontrollkaestchen "Keine Nachrichten herunterladen ueber" und gebe dahinter die Maximalgroesse der zu empfpangenden Nachricht in KB ein. Eine bessere Variante waehre natuerlich das Programm "MailTalkX". Es bietet unteranderem auch die moeglichkeit E-Mails zu filtern. Es ist ein super Programm und du kannst auch mehrere E-Mail-Accounts dort eingeben. Wenn du mal 2-3 Stunden Online bist, brauchst du nicht immer all deine Accounts nach E-Mails zu durchsuchen. Bei 5 oder 6 Accounts ist das naemlich ganz schoen nervig. Du kannst dich zuruecklegen und weiter Surfen. MailTalkX informiert dich wenn du Post auf irgendeinem Account bekommen hast. Du kanntst Deine E-Mails mit MailTalk auch sofort lesen. Wenn es Muell ist, kommt die Mail halt in den Trashcan. Ist es eine Mail die Du haben moechtest, startest du Dein E-Mail-Programm und holst sie einfach ab. MailTalkX besitzt noch etliche andere schoene features. Es ist einfach Super. MailTalkX http://www.softbytelabs.com/ MailTalk benoetigt auch zusaetzliche DLL-Files, die Du hier findest. ftp://SoftByteLabs.com/SupDLL.exe -----------------------------------------------------------------------------/ [============================================================================] Kurse [============================================================================] *[K1]* ---[3DGfx-Kurs von Artur Ligmann]--------------------------------------------- Hey! Wer kennt sie nicht, die geilen 3D Effekte in Demos/Intros? Es ist erstaunlich, wie man mit 'einfachen' Rechenoperationen fast fotorealistische Bilder zaubern kann. Die Anfänge sind simpel und schon sooo oft erklärt worden, deshalb werde ich diese überspringen. Ich setze voraus, dass euch der Begriff "Vektor" oder "Perspektive" bekannt sind. Ihr könnt einen Sternenscroller coden(und das Prinzip versteht) und wollt mehr wissen? Dann ist dieser Kurs genau das richtige. [1] Matrizen Whew! Klingt kompliziert! Ist es aber nicht. Dank Matrizen kann man mehrere komplexe Rechenoprationen in einer großen Matrix zusammenfassen was mehrere Vorteile mit sich bringt: Die Matrix kann vereinfacht werden; Ermöglicht eine frei bewegbare Kamera; 9 Multiplikationen anstatt 12; Alles ist übersichtlicher; Merke : Eine Matrix bzw. ein Vektor wird gewöhnlich mit einem großen Buschstaben beschrieben (z.b.: M). Ok! Kommen wir zum technischen Teil. Eine Matrix kann man sich als eine Art Tabelle vorstellen. Eine Matrix kann aus einem oder mehreren Vektoren bestehen: +--+ |vx| V = |vy| |vz| +--+ Wobei V ein Vektor ist und Vx,Vy und Vz seine Koordinaten. Die einfachste Rechenopration ist die Addition. +- -+ |vax + vbx| Va + Vb = |vay + vby| |vaz + vbz| +- -+ Wobei V ein Vektor ist und Vx,Vy und Vz seine Koordinaten. Das gleiche gilt natürlich auch für die Subtraktion von Vektoren. Eines der wichtigsten Rechenoperationen ist der sog. Dot-Produkt. Bei dieser Operation wird keine Matrix benötigt, da das Ergebnis kein Vektor ist. DP = A * B = ax * bx + ay * by + az * bz Wobei A und B Vektoren sind und x,y und z ihre Koordinaten. DP ist das Ergebnis. Es gibt noch das Kreuzprodukt: +- -+ |ay Bz - az by| A x B = |az bx - ax bz| |ax by - ay bx| +- -+ Die Länge eines Vektors wird wie folgt berechnet: d = sqrt(ax² + ay² + az²) Wobei A der Vektor ist und d seine Länge. Einen Normalvektor aus einem Vektor berechnet man wie folgt: d = sqrt(ax² + ay² + az²) Ax = Ax / d Ay = Ay / d Az = Az / d Die Koordinaten eines Normalvektors variieren zwischen -1 und 1. Dank dem Normalvektor lassen viele viele Effekte erzeugen. Er wird vor allem bei Lichtquellen Schattierung und Backface-culling benutzt. Es besteht noch die Möglichkeit einen Vektor mit einem Skalar zu multiplizieren: +- -+ |k*ax| k * A = |k*ay| |k*az| +- -+ Wobei k der Skalar ist und A der Vektor. Ok! Wie kann ich zwei Matrizen miteinander ausmultiplizieren? +- -+ +- -+ +- -+ |abc| |jkl| |aj+bm+cp ak+bn+cq al+bo+cr| A * B = |def| * |mno| = |dj+em+fp dk+en+fq dl+eo+fr| |ghi| |pqr| |gj+hm+ip gk+hn+iq gl+ho+ir| +- -+ +- -+ +- -+ Wobei A und B Matrizen sind. Nun fehlt nur noch eins. Wie multipliziere ich einen Vektor mit einer Matrix? +--+ +- -+ +- -+ |vx| |abc| |vx*a+vy*d+vz*g| V * M = |vy| * |def| = |vx*b+vy*e+vz*h| |vz| |ghi| |vx*c+vy*f+vz*i| +--+ +- -+ +- -+ Puh! Wahrscheinlich werden viele von euch nicht alles ganz verstanden haben. Macht nix! Später ist das für euch nur ein Kinderspiel. Der nächste Teil ist etwas für die fortgeschrittenen unter euch. Ich werde die Rotation von Objekten mit Hilfe von Matrizen etwas erklären. Die genaue dokumentation finde ihr in der nächsten Ausgabe des Kurses. Um ein Objekt zu rotieren braucht man eine Rotationsmatrix. Wie jeder weiss, kann man ein Objekt um drei verschiedene Achsen rotieren: X,Y und Z. Für jede Achse gibt es eine andere Matrix. Die X-Achsen-Rotationsmatrix sieht so aus: +- -+ |1 0 0 0| Rx = |0 cosx -sinx 0| |0 sinx cosx 0| +- -+ für die Y-Achse: +- -+ |cosy 0 siny 0| Ry = |0 1 0 0| |-siny 0 cosy 0| +- -+ für die Z-Achse: +- -+ |cosz -sinz 0 | Rz = |sinz cosz 0 | |0 0 1 | +- -+ Wobei sin und cos die Sinus bzw. Kosinus Werte des entsprechenden Winkels sind(x,y und z sind Winkel!). Rx, Ry und Rz sind Rotations- matrizen. Achtung! Winkel können zwischen 0 und 360 variieren. Um korrekte Ergebnisse zu bekommen, müsst ihr den Winkel mit PI*180 multiplizieren. Wenn ihr nun einen Vektor mit einer dieser Matrizen multipliziert, habt ihr ihn um eine Achse rotiert(probierts aus!). Aber was mache ich, wenn ich den Vektor um alle Achsen rotieren will? Man könnte den Vektor nacheinander mit den drei Matrizen multiplizieren. Diese Methode ist "etwas" langsam. Man würde pro Rotation 27 Multiplikationen(!) benötigen. Deshalb gibt es eine grosse verein- fachte Rotationsmatrix. Diese sieht so aus: +- -+ | cosy*cosz cosy*sinz -siny | R = | sinx*siny*cosz-cosx*sinz sinx*siny*sinz+cosx*cosz sinx*siny | | cosx*siny*cosz+sosx*sinz cosx*siny*sinz-sinx*cosz cosx*cosy | +- -+ Diese Matrix wird nur einmal pro Objekt berechnet. Jetzt braucht man nur noch 9 Multiplikationen pro Vektor. Wie man einen Vektor mit einer Matrix multipliziert wisst ihr ja. Das wars für heute! Ich empfehle sich diesen Artikel mehrmals durch- zulesen. Ich kann natürlich nicht garantieren, dass er fehlerlos ist! Wenn jemand Fragen, Kritiken o. ä. hat: ligmann@kulmbach.baynet.de -----------------------------------------------------------------------------/ *[K2]* --[Hugi s Assembler Kurs Teil 6]---------------------------------------------- Hugi Assembler Kurs Teil 6(Folge 7) Dieser Artikel wurde uns freundlicherweise von Adok/Hugi Diskmag zur verfuegung gestellt. Der Kurs "Adok's Way to Assembler" ist Freeware. Das heisst, dass er in unveraenderter Form frei kopiert und weitergegeben werden kann. Das Copyright liegt bei Adok (Claus-Dieter Volko). (nochmals herzlichen Dank Adok) Adok's Way to Assembler Folge 7 Yo... welcome zur ersten Kursfolge fr Fortgeschrittene. :) Heute strzen wir uns in das unebene und wilde Land der TSRs. Also nix wie los! Sturzhelm nicht vergessen! +++ Was versteht man unter TSR? +++ TSR ist die Abkrzung fr Terminate and Stay Resident. Bei TSRs handelt es sich also um speicherresidente Programme. Die Grundidee hinter einem speicherresidenten Programm ist es, sich in einen Interrupt einzuklinken und so im Hintergrund anderer Programme zu arbeiten. Auf diese Weise entsteht eine Art Multitasking unter DOS. Das Einsatzgebiet der TSR-Programmierung liegt vor allem bei Treibern - jeder Treiber unter DOS ist ein TSR. Ihr seht, TSR-Programme sind fr die Benutzung von DOS lebenswichtig. Aber auch bei manchen Utilities und den meisten Viren handelt es sich um speicherresidente Programme. Wie programmiert man nun eigene TSRs? Allgemein gesagt, muá man dazu drei Schritte tun: 1. Man schreibt die Prozedur (Interrupt-Handler), die in einen Interrupt eingeklinkt werden soll (auf die ein Interrupt-Vektor verbogen werden soll); 2. man verbiegt den gewnschten Interrupt-Vektor auf den Interrupt-Handler; 3. man berechnet die Anzahl der Paragraphen (ein Paragraph = 16 Bytes), die resident im Speicher bleiben sollen, und beendet das TSR-Programm mit einer speziellen Funktion des Interrupts 21h. Klingt einfach, nicht wahr? :) Nun, setzen wir die Theorie in die Praxis um! Hier ein Beispielprogramm, das ich im folgenden Zeile fr Zeile erl„utern werde: MODEL TINY ;Speichermodell fr COM CODE SEGMENT ;Beginn Code-Seg ASSUME CS:CODE, DS:CODE ;CS und DS auf Code-Seg ORG 100h ;Startadresse COM beginning: ;Startlabel JMP install ;zur Installation springen INTPROC PROC FAR ;neuer INT-5-Handler STI ;Interrupts zulassen IRET ;zurckkehren last_byte: ;letztes Byte des Handlers INTPROC ENDP ;Ende des Handlers ;Installation des Interrupt-Handlers install: ;Label install MOV DX,OFFSET INTPROC ;Offset nach DX (Segment steht in DS) MOV AX,2505h ;Funktion 25h, Interrupt-Vektor 5 CLI ;Interrupts sperren INT 21h ;auf die eigene Routine umleiten STI ;Interrupts zulassen ;Programm speicherresident beenden MOV DX,OFFSET last_byte;Anz. Bytes, die resident bleiben SHR DX,4 ;in Paragraphen umwandeln INC DX ;DX zur Sicherheit erh”hen MOV AX,3100h ;Programm resident beenden INT 21h ; CODE ENDS ;Ende Code-Seg END beginning ;Ende des Programms Erzeugt aus diesem Programm eine COM-Datei, startet sie und probiert einmal, die Taste Print Screen zu drcken. Was passiert? Richtig: nichts! Normalerweise wird mit einem Druck auf Print Screen der Inhalt des Bildschirms auf dem Drucker ausgegeben. Fr diesen Vorgang ist der Interrupt 5 zust„ndig. Obiges Beispielprogramm verbog jedoch den Interrupt-Vektor des Interrupts 5 auf einen eigenen Interrupt-Handler. Dieser enth„lt nur die Befehle STI und IRET. Falls ihr es schon vergessen haben solltet: STI dient dazu, das Interrupt-Flag zu setzen, so daá eventuell gesperrte Interrupts wieder zugelassen werden. Neu ist IRET. Dieses Mnemoniclein wird in Interrupt-Handlern anstelle von RET verwendet. OK, dann gehen wir mal Zeile fr Zeile das Programm durch... aber nicht von Anfang an, denn der Anfang sollte mittlerweile ja schon mehr als selbstverst„ndlich sein. Zeile 7: Mit JMP install berspringen wir den Interrupt-Handler, der ja erst nach der Installation des Programms ausgefhrt werden soll, und begeben uns zur Installationsroutine, also zu jener Routine, in der der Vektor von INT 5 auf unseren Handler verbogen wird. Zeilen 9-13: Jeder Interrupt-Handler ist eine FAR-Prozedur, wie wir sie in der vorigen Folge durchgenommen haben. Am Anfang steht der Kopf der Prozedur. Die n„chsten zwei Zeilen sind der Inhalt des Interrupt-Handlers. Danach folgt ein Label, welches das Ende der Prozedur darstellt. Wir werden es fr die Berechnung der Anzahl der Paragraphen, die resident bleiben sollen, ben”tigen. Zum Schluá kommt der Fuá der Prozedur. Wichtig zu erw„hnen ist, daá Interrupt-Handler mit IRET anstelle von RET abgeschlossen werden mssen. Zeilen 17-22: Die Installationsroutine! Wir verbiegen den Vektor von INT 5 auf unseren Handler mit Hilfe von INT 21h, Fkt. 25h. In DS muá das Segment und in DX der Offset des Handlers stehen. Da in COM-Dateien dank ASSUME DS:CODE das DS-Register automatisch auf das Codesegment zeigt, mssen wir uns nicht zus„tzliche Tipparbeit antun. Auáerdem muá in AL die Nummer des zu verbiegenden Vektors bergeben werden. Vor dem Aufruf von INT 21h sperren wir mit CLI alle brigen Interrupts, um sicherzugehen, daá INT 5 nicht versehentlich w„hrend des Verbiegens aufgerufen werden kann, was sonst zu einem Chaos fhren wrde. Danach lassen wir die Interrupts mit STI wieder zu. Zeilen 25-29: Nun machen wir das Proggy zu einem TSR! INT 21h, Fkt. 31h dient, wie Fkt. 4Ch, zum Beenden des Programms. Im Unterschied zu Fkt. 4Ch wird dabei allerdings nicht der komplette Speicher, den das Programm eingenommen hat, freigegeben. Man muá im DX-Register angeben, wie viele Paragraphen nach dem Beenden resident bleiben, also nicht freigegeben werden sollen. Hier kommt das Label last_byte ins Spiel! Wir wollen ja den Speicherbereich, den unser Interrupt-Handler einnimmt, resident machen. Also weisen wir DX den Offset des Ende des Handlers zu - wir weisen DX den Offset von last_byte zu. Nun haben wir in DX die Anzahl der Bytes, die resident bleiben mssen. Funktion 31h erwartet ihren Parameter jedoch nicht in Bytes, sondern in Paragraphen. Da ein Paragraph 16 Bytes entspricht, shiften wir DX um 4 nach rechts. (Ihr erinnert euch?) Abschlieáend erh”hen wir DX zur Sicherheit um 1, denn sonst k”nnte es sein, daá zu wenig Speicher resident gemacht wird und das Programm abstrzt. (Beispiel: 18 geteilt durch 16 ergibt, da es sich um ganze Zahlen handelt, 1. Um 18 Bytes resident zu machen, mssen wir jedoch nicht einen, sondern zwei Paragraphen an Fkt. 31h bergeben.) Nun werden noch die Funktionsnummer ins AH-Register geschrieben und der Interrupt gecallt - juchu! Fertig! Dieses Programm k”nnt ihr als Gerst fr eigene TSRs verwenden. Umfangreiche TSRs bestehen natrlich nicht nur aus STI und IRET, sondern aus bunten, hpfenden Menpnktchen und „hnlichem Zeug. Jedenfalls, wer etwas Vernnftiges schreiben will, will sicherlich auch wissen, wie man den ursprnglichen Standard wiederherstellen kann, sprich: wie man einen Interrupt-Vektor auf den Original-Handler setzen kann. Nichts leichter als das! +++ Ermittlung des Original-Handlers +++ Zu diesem Zweck benutzt man INT 21h, Fkt. 35h. In AL muá die Nummer des Interrupt-Vektors bergeben werden. Nach dem Aufruf von INT 21h, Fkt. 35h findet man in ES das Segment und in BX den Offset des gesuchten Handlers vor. Das Ermitteln des Original-Handlers ist auch dann notwendig, wenn man ein Programm schreiben will, das per Hotkey "aufgeklappt" werden soll. Dazu verbiegt man den Tastatur-Interrupt (INT 9) auf eine eigene Routine, welche abfragt, ob dieser Hotkey gedrckt wurde. Falls nein, ruft die Routine den Original-Handler auf. +++ Verwenden von DOS-Funktionen in TSRs +++ Das Verwenden von DOS-Funktionen in Interrupt-Handlern ist leider nicht ohne weiteres m”glich. Wenn n„mlich sowohl das Betriebssystem als auch ein TSR-Programm gleichzeitig eine DOS-Funktion aufrufen, gibt's einen Systemabsturz. Zum Glck gibt es auch fr dieses Problem eine L”sung: Mit INT 21h, Fkt. 34h kann man die Adresse des INDOS-Flags ermitteln. Ihr Segment wird in ES und ihr Offset in BX zurckgegeben. Solange das INDOS-Flag einen anderen Wert als 0 hat, wird gerade eine DOS-Funktion ausgefhrt. Was macht also der Coder? Im nicht-residenten Teil des TSRs (dem Installations- und Beendigungsteil) ermittelt er die Adresse des INDOS-Flags und speichert sie in Variablen ab. Wichtig: Die Variablen mssen zwischen JMP install und dem Kopf des Interrupt-Handlers definiert sein, um sicherzugehen, daá sie resident bleiben! Im Interrupt-Handler selbst wird anschlieáend vor jedem Aufruf einer DOS-Funktion eine Schleife wie etwa die folgende eingefgt: mov ax,word ptr indos_seg mov es,ax mov bx,word ptr indos_ofs indos_test: cmp es:[bx],0 jne indos_test Alles klar? Gut! Dann viel Spaá mit den TSRs! Euer Adok. -----------------------------------------------------------------------------/ *[K3]* --[C - Kurs Teil 8]----------------------------------------------------------- 8. Zeiger 8.1. Was ist ein Zeiger Ein Zeiger ist eine Variable, die die Adresse einer anderen Variablen als Wert enthalet. Ein Zeiger "zeigt" also auf ---- Ueberblick ------------ eine andere Variable. -1: Grundlagen - -2: Ein/Ausgabe - Bild 8.1.1 -3: if/case - -4: Ausdruecke - ******* ****** -5: Arrays - * ADR * *Wert* -6: Strings/Structs/Union - * * ------> * * -7: Eigene Datentypen - * X * * X * -8: Zeiger - ******* ****** ---------------------------- Zeiger X 8.2 Variablen und Adressen Jede Variable ist an einer bestimmten Stelle im RAM, Adresse, gespeichert. Mit dem & Operator liefert C eine Moeglichkeit die Adresse einer Variablen festzustellen. Beispiel 8.2.1 { int x; x=100; printf ("Der Wert von x ist %d, und ist in Adresse %X gespeichert", x,&x); } Beipsiel 8.2.1 zeigt eine einfache Anwendung des Adressoperators. (Gibt Wert und Adresse der Variablen x auf dem Bildschirm aus). 8.3 Zeigervariablen Ausser auf Bitfelder und register-Variablen kann ein Zeiger auf jeden beliebigen Datentyp zeigen. Will man einen Zeiger definieren schreibt man zuerst den Typ und dann einen * gefolgt vom Zeigernamen. Datentyp *Zeigername Beispiel 8.3.1 int *zeiger1; char *zeiger2; Moechte man das ein Zeiger schon von beginn an auf eine bestimmte Variable zeigt kann man diesen folgendermassen initialisieren. Beispiel 8.3.2 int variable1; int *zeiger1 = &variable1; // zeiger1 wird von anfang an auf variable1 // initialisiert Kommen wir nun zu Zeigerzuweisungen zur Laufzeit des Programms. Beispiel 8.3.3 int *zeiger1, *zeiger2; ... zeiger1 = zeiger2; In Beispiel 8.3.3 wird dem zeiger1 der zeiger2 zugedwiesen, d.h. zeiger1 zeigt nach der Zuweisung auf das selbe Objekt wie zeiger2. In Bild 8.3.1 ist der ganze Zusammenhang nochmals grafisch dargestellt. Wenn zeiger1 der einzige zeiger auf Objekt1 war ist Objekt1 nun verloren. (Objekt1 belegt zwar noch speicher aber man kann diesen nicht mehr freigeben oder Objekt1 aendern, oder ... (der Compiler hat vergessen wo Objekt1 ist)) Bild 8.3.1 Vor zeiger1=zeiger2 Nach zeiger1=zeiger2 zeiger1 ----> Objekt1 zeiger1 ---- Objekt1 ----> Objekt2 zeiger2 ----> Objekt2 zeiger2 ---- Beispiel 8.3.4 int Objekt1,*Z1 ... Z1=&Objekt1 // Z1 zeigt nun auf Objekt1 in Beipsiel 8.3.4 wird in der 1. Zeile ein Objekt1 vom Typ int deklariert und ein Zeiger Z1 auf den Typ int. Nach dieser Deklaration zeigt der zeiger Z1 ins Nirwana (im guestigsten Fall auf Null (Compilerabhaengig)). In Zeile 2 wird Z1 nun die Adresse von Objekt1 uebergeben, d.h. Z1 zeigt nun auf Objekt1 8.4 Address(&)- und Inhalts(*)operator in der Praxis Den Addressoperator hab ich ja in 8.2 schon erklaert, fuer alle die den Inhaltoperator nicht kennen erklaer ich das hier noch mal. Waehrend der Adressoperator die Addresse liefert an der ein Objekt liefert der Inhalts- operator den Wert des Objekts Variable = *Zeiger Variable hat nun den Wert des Objektes auf das Zeiget zeigt. Beispiel 8.4.1 int eins=10; // variable eins mit Wert 10 deklarieren int *zeiger=&eins; // zeiger zeigt auf eins printf ("%d",*zeiger); // gibt 10 aus denn den zeiger zeigt auf eins und mit "*" wird der Wert von eins ausgegeben Beispiel 8.4.2 int eins,zwei; // 2 variablen von typ int int *zeiger; // zeiger auf int eins = 1000; // was das macht solltet ihr nun langsam wissen :) zwei = 2000; // wenn nicht in den alten kursen nochmal nachschlagen zeiger = &eins ; // zeiger zeigt nun auf Objekt eins zeiger = &zwei ; // zeiger zeigt nun auf Objekt zwei eins = *zeiger ; // weist eins den inhalt von dem Objekt zu auf das zeiger zeigt ( da zeiger gerade auf zwei zeigt also 2000) 8.5 Arrays und Zeigervariblen Arrays kann man auch statt ueber die uebliche weise (Array[nr]) mit Zeiger ansprechen. Beispiel 8.5.1 int a[10]; // array (10 elemente a[0] ... a[9]) int *za; // zeiger int i; za = &x[0] // zeiger za zeigt jetzt auf a[0] for (i=0; n<10;n++) { *za = i; // Das Objekt an derstelle Za erhaellt den wert i za++; // za wird um 1 erhoeht (za zeigt jetzt auf das // naechste objekt vom typ int } Das obige Beispiel fuellt das Array a ueber den Umweg mit Zeigern mit den Zahlen 1 bis 9. 8.6 Zeiger und der Speicher Bisher haben wir nur mit statischem Speicher (Speicher der schon zur Compilierung fest reserviert wird) gearbeitet. Nun werden wir uns mit dynamischen Speicher beschaeftigen (Speicher den man zur Laufzeit "allociert" und auch wieder frei geben kann). Hierzu werden wir Zeiger benoetigen und einige Funktionen der stdlib.h (also nicht vergessen #include am Anfang des Programms. Um dynamischen Speicher zu reservieren benutzen wir die Funktion malloc (sie belegt die angegebene Anzahl von bytes auf dem sog. Heap) Gelingt es malloc nicht den gewuenschten Speicher zu allocieren (z.b. weil nicht mehr genuegend speicher vorhanden ist) wird die Adresse 0 (auch bekannt als NULL) zurueckgegeben. Diese Adresse wird bei Zeigern immer als Fehler oder Listenende oder aehnliches benutzt. zeiger = malloc (groesse_des_Speichers_in_byte) Beispiel 8.6.1 int i; int *speicher; // zeiger deklarieren speicher = malloc (200); // es werden 200 bytes (50 int's) reserviert if (speicher == NULL) printf ("OUT OF MEMORY ERROR \n READY. \n"); else + // fuelle den Speicher mit 100 for (i=0;i<50;i++) *(speicher+i) = 100; // ist gleich speicher [i] = 100 Moechte mal nicht unbedingt jedes mal in ner Tabelle nachschauen wieviel byte der Typ xy belegt kann man das auch mit der sizeof Funktion auch komfortabler machen. Ausser diesem Vorteil ist das Programm dann auch leichter zu protieren (Bei UNIX hat ein int 4 Bytes bei manchen DOS C Compilern nur 2). Groesse * sizeof (TYP) In Beispiel 8.6.1 koennte man die malloc Zeile auch so schreiben: speicher = malloc (50*sizeof(int)); Nun moechte ich euch die Funktion realloc vorstellen mit der man die Groesse von mit malloc allocierten Speicher aendern kann. zeiger=realloc (zeiger, neue_groesse_in_bytes) Irgenwann wenn man will evtl. (was man auch unbedingt sollte) den belelgten speicher wieder frei geben.das geht mit free. free (zeiger); Hengen wir also an unser Beispiel 8.6.1 noch die Zeile an : free (Speicher); Damit wir keinen Speichermuell produzieren und ploetzlich Meldungen bekommen das kein Speicher mehr frei ist oder einfach unser Programm abstuertzt. -----------------------------------------------------------------------------/ [============================================================================] t h e e n d [============================================================================] Redaktion ............... Bj, melcom Newsmanager ............. melcom writers ................. Dynamite! melcom Artur Ligmann Bj Adok others (more writers wanted) design .................. melcom ------------------------------------------------------------------------------ contact ................. Bj - bdietri@alma.student.uni-kl.de melcom - melcom@traxinspace.com Dynamite! - dn.tlp@gmx.net Adok - hugi@netway.at Artur Ligmann - ligmann@kulmbach.baynet.de Coders.ger HP - http://www.codersger.home.ml.org Copyright (c) 1998 CODERS.GER TEAM - the_coders.ger_mag@usa.net MEMBERS OF . + . . + . . + . /\ /\ /\ /\ /\ /\ . + + / \ / \ / \ \ \ / \ / \ . . / /\ \/ /\ \/ /\ \ / \/ /\ \/ /\ \ ____________/ / / / \ \/\ \ \/ / /\/ \/ / \ \/____________ / / / / /\/ /\ \ \/\/ / / \ / /\/ . \ \/ /\ \ \ \/ /\ / / /\/\/\ \ . . \ / \ \ + \ / \ \ \/ /\ \ \ \/ \/ \/ \/ \/ \/ . . . Section Germany . BJ: bj.DesirE@usa.net + . . KJELL: kjell-m@usa.net . + + ASP: The_mighty_ASP@t-online.de . CARDIAC: lewerentz@informatik.uni-rostock.de + REALTIME: sievers@mainz-online.de + DISKRUNNER: memrich@informatik.uni-kl.de . . NICEOMEN: fgb.gmx.de + . + ^ . / \ . ^ . ^ / \ / / \ . / \ ^ / /\ / http://DesirE.home.pages.de / \ /\ /\/\/\ / /\ \ / \/ \ /\ \ // \ /\ / \_/ \/\ / / \ \/ / \/\/ \ \/ \/ \/ \___/ \/ [only active Members]