Seite 5 von 42
Verfasst: 26.04.2006 23:48
von Andre
ullmann hat geschrieben:PureBasic kann mit Doubles (Fließkomma doppelter Genauigkeit) rechnen.
Wurde auch die Math-Lib auf doppelte Genauigkeit umgestellt? Falls ja, wäre die Angabe in der Hilfe Kapitel Math-Lib (Genauigkeit .f (Float)) zu korrigieren.
Falls nein: Müssen Doubles vor der Verwendung der Math-Lib in Floats konvertiert werden? Wie geht das?
Antwort von Fred:
if a double is involved, it switch automatically to the double function.
Bedeutet also, dass bei Verwendung eines Double-Werts automatisch eine entsprechende Double-Ausgabe der Math-Lib-Funktion genutzt wird.
Ein Beispiel von mir, welches die Verwendung von Doubles darstellt:
Code: Alles auswählen
Value.d = 2.342452554458946
Result.d = Cos(Value)
Debug Value
Debug Result
Werde also die Hilfe dementsprechend anpassen.
Sollte jemand Inkompatiblitäten der Math-Lib in Verbindung mit Doubles feststellen, dann bitte entsprechendes Code-Beispiel als Bug-Report posten.
Verfasst: 28.04.2006 03:48
von Toshy
Hallo Andre,
in der Hilfedatei könntest du bei der Beschreibung von
ForEach : Next
Vielleicht folgenden leicht erweiterten Text einbauen
ForEach durchläuft alle Elemente der angegebenen verknüpften Liste
'LinkedList', beginnend beim ersten Element bis zum letzten Element. Ist die
Liste leer, wird die ForEach : Next Schleife umgehend abgebrochen. Um alle
Befehle zur Verwaltung von verknüpften Listen anzusehen, klicken Sie hier.
Da der Durchlauf erst dann beendet ist, sobald das von der Position her
letzte Element erreicht ist (nicht von der Anzahl her), dürfen während des
Durchlaufs problemlos Elemente gelöscht oder hinzugefügt werden. Ebenso darf
mit ChangeCurrentElement() auch das aktuelle Element geändert werden.
Nach einer der genannten Änderungen wird der nächste Schleifendurchlauf an dem auf das aktuelle Element folgende Element fortgesetzt.
Mit dem Break Befehl kann die ForEach : Next Schleife (vorzeitig) verlassen
werden, mit dem Continue Befehl kann das Ende des aktuellen
Schleifendurchlaufs übersprungen werden.
Der Mittelteil ist neu von mir und vielleicht für den ein und anderen Interssant. Habe das gerade eben getestet und für mich sehr nützlich. Ein ein schöner Vorteil der ForEach-Next-Schleife.
Habe einige Zeit über den Text gegrübelt, sollte so aber korrekt sein. Tipps bei der Rechtschreibung und Zeichensetzung nehme ich aber gerne an, das ist nicht so meine Stärke.
Und noch als Hinweis, bei den Netzwerkfunktionen sollte man Vielleicht mal die Begriffe Client, ClientID und Verbundung vereinheitlichen. Wenn ein Programmiererneuling nun auf der Serverseite mit eventClient() den "Client" erhält und die Verbindung serverseitig beenden will, so findet er bei CloseNetworkConnection() nur die Angabe "Verbindung" und wird dann verunsichert ob das der selbe Wert ist.
Bei ConnectionID() würde es wohl besser gleich so lauten
Gibt den eindeutigen Systembezeichner (Socket) der 'Verbindung' zurück.
Diese Ergebnis ist manchmal auch als 'Handle' bekannt. Schauen Sie in das Extra-Kapitel Handles und Nummern für weitere Informationen.
SelectElement()
hier sollte man korrekter Weise folgendes schreiben
Wechselt vom aktuellen Listen-Element zum Element an der angegebenen 'Position'. Das erste Element befindet sich an Position 0, das nächste an 1 und so weiter. Dies ist sehr nützlich, wenn Sie an eine bestimmte Position innerhalb der Liste gehen wollen, ohne dafür eine eigene Schleife einzubauen. Da LinkedLists keinen Index verwenden wird allerdings zwangsweise bis zu der Zielposition jedes Element schrittweise angesprungen. Ist man auf eine schnellere Methode angewiesen, sollte man ChangeCurrentElement() nutzen.
Gruß
Toshy
Verfasst: 28.04.2006 08:01
von ullmann
In der Hilfe sollte auch stehen, dass bei dem Text eines Button-Gadgets ein Zeichen unterstrichen werden kann, wenn ihm ein "&" vorangestellt wird.
Gruß Rainer
Verfasst: 28.04.2006 14:48
von Sven
>>In der Hilfe sollte auch stehen, dass bei dem Text eines Button-Gadgets ein Zeichen unterstrichen werden kann, wenn ihm ein "&" vorangestellt wird.
Dann aber auch, dass damit nicht automatisch das Tastenkürzel zugewiesen wird wie bei Menus (Alt+Zeichen), sondern dass man das über AddKeyboardShortcut selber machen muss. Und dass die Markierung bei WinXP nur angezeigt wird, wenn bei Anzeige => Darstellung => Effekte => Unterstrichene Buchstaben ausblenden nicht markiert ist (sonst kann man sich dusselig suchen, warum das nicht geht).
Sven
Verfasst: 30.04.2006 21:54
von Andre
Weiterer kurzer Zwischenbericht:
Die Gadget Lib hat eine erweiterte Einleitung bekommen - und zwar mit Links zu OpenWindow() und den Toolbar, Menu und Statusbar Libs.
Außerdem mit den oft gewünschten Preview-Pics zu allen verfügbaren Gadgets.

Verfasst: 01.05.2006 02:27
von Falko
Verfasst: 01.05.2006 18:50
von heinz.goldbach
Hallo,
für die Anwendung von Unicode in PB sollte ein Beispiel in der Hilfe sein oder direkt im Examples Verzeichnis. Ich brauche zwar kein Unicode, wollte es mir aber mal anschauen. Die Hilfe mit den Links hat mir nicht so richtig weitergeholfen.
Verfasst: 02.05.2006 10:15
von Sven
>>Unicode ... Die Hilfe mit den Links hat mir nicht so richtig weitergeholfen.
Kann ich so bestätigen, ich hab da auch nicht durchgesehen, wie das mit den Unicodes nun geht.
Sven
Beispielcode WriteData()
Verfasst: 06.05.2006 14:57
von mardanny71
Hallo!
Die Hilfe sieht schon sehr gut aus.
@Andre' - das kennst Du sicher noch.
Damit es nicht verloren geht poste ich es nochmal.(hoffentlich noch rechtzeitig)
Das Beisspiel für WriteData() funktioniert nicht:
Code: Alles auswählen
*MemoryID = AllocateMemory(1000) ; reservieren eines Speicherblocks
If *MemoryID
PokeS(*MemoryID, "Store this string in the memory area") ; wir schreiben einen String in den Speicherblock
EndIf
If CreateFile(0, "Text.txt") ; wir erstellen eine neue Text-Datei...
WriteData(0, PeekS(*MemoryID), 10) ; die ersten 10 Zeichen des Speicherblocks in die Datei schreiben
CloseFile(0) ; die zuvor geöffnete Datei schließen und damit die geschriebenen Daten endgültig speichern
Else
Debug "Konnte die Datei nicht erstellen!"
EndIf
Das ginge mit WriteString()
Laufen würde es auch ohne PeeS()
Code: Alles auswählen
*MemoryID = AllocateMemory(1000) ; reservieren eines Speicherblocks
If *MemoryID
PokeS(*MemoryID, "Store this string in the memory area") ; wir schreiben einen String in den Speicherblock
EndIf
If CreateFile(0, "Text.txt") ; wir erstellen eine neue Text-Datei...
WriteData(0, *MemoryID, 10) ; die ersten 10 Zeichen des Speicherblocks in die Datei schreiben
CloseFile(0) ; die zuvor geöffnete Datei schließen und damit die geschriebenen Daten endgültig speichern
Else
Debug "Konnte die Datei nicht erstellen!"
EndIf
Grüsse an alle
mardanny71
Verfasst: 06.05.2006 20:20
von Toshy
Hallo Andre,
schau doch mal hier nach:
http://www.purebasic.fr/german/viewtopi ... highlight=
Da stimmt glaube ich was mit der Erklärung der Prototyps nicht.
Ich kenne mich selber mit diesen noch nicht aus, daher (noch) kein genauer Vorschlag von mir den du übernehmen könntest.
Gruß
Toshy