Seite 7 von 18

Verfasst: 04.02.2006 02:41
von Didelphodon
Frage: Wer schreibt eine Konverter, um alte Sourcen zu korrigieren?????????????????!!!!!!!! :roll:

Schnelles Handeln ist gefragt!!!!

LG Didel.

Verfasst: 04.02.2006 03:17
von freak
Meine Güte, diese Threads wachsen schneller als ich lesen kann :)

> changed: ActivateGadget(#Gadget) is now SetActiveGadget(#Gadget)
> Welcher Sinn steckt dahinter?

Es gibt jetzt auch ein GetActiveGadget() was das Gegenstück dazu ist. Hat also Sinn gemacht
ActivateGadget() umzubennenen, weil es bei den anderen Befehlen auch immer Get...() und Set...() heist.

Die umbenannten Befehle haben entweder früher keinen echten Sinn gemacht,
passen nicht zu anderen neuen Befehlen, oder machen sonst irgendwie im größeren Zusammenhang keinen Sinn.

Zum Beispiel wurde IsFunction() zu GetFunction(), weil alle anderen Is...() funktionen
überprüfen ob ein PB Objekt (Image, Gadget, Window) existiert oder nicht, nur die eine Funktion tut nichts in der Art.

So gibt es zu jeder Änderung irgend einen Sinn, manchmal sieht man ihn aber nur in einem größeren Zusammenhang.

Zum Thema Threadsafety:

Wenn man die Option in den Compileroptionen nicht aktiviert hat man im Prinzip
das Gleiche wie in PB 3.94 was die Sicherheit angeht.
D.h. Strings sind unsicher und alle komplexeren PB Funktionen werden wohl auch Probleme machen.
(sprich wenn man mit Mutex arbeitet um Strings zu schützen und aufpasst
was man macht kann man ohne diese Option auch threads verwenden)

Die threadsafe Option macht die Strings threadsicher und auch alle PB Befehle.
Das heist man kann im Thread viel mehr machen ohne sich Sorgen machen zu müssen)
Das hat aber Auswirkungen auf die Geschwindigkeit der Funktionen und Strings, desshalb
sollte man das nur verwenden wenn man auch wirklich einen Thread braucht.

Die PB Mutex befehle verwenden übrigens Critical Sections unter Windows.


Zum Thema Assembly code mit !

Das wurde ja viel verwendet für kleinere asm Prozeduren und so. Durch die
Optimierung des Asm codes für Prozeduren funktionieren diese codes aber
alle nicht mehr.
Der compiler generiert jetzt für jede lokale Variable ein asm macro über das
man die Variablem im asm code von jetzt an ansprechen kann.

Für die lokale Variable Nummer gibt es also in der Prozedur ein p.v_Nummer,
das dem esp+XX also der Position der Variable auf dem Stack entspricht.
mit "mov eax, dword [p.v_Nummer]" kann man also auf die Variable zugreifen.

Verfasst: 04.02.2006 03:30
von Falko
benny hat geschrieben:
hallodri hat geschrieben:

Code: Alles auswählen

Macro AnotherMacro
  UCase
EndMacro

Macro NewWorld(a=1, b=2, c="Test")
  a#b#er("FAST", AnotherMacro(c))
EndMacro

NewWorld(Message,Request)

; The '#' puts together the 2 parts in one word. So a#b#er becomes MessageRequester when you pass
; Message for a and Request for b.

; The assigning of the values to a and b is only to demonstrate
; the ability for optional parameters. It does not make sense in this example really, as
; NewWorld() would become:

12er("FAST", UCase("Haha"))

Kann mir das mal jemand erklaeren ?
Was genau verstehst Du daran nicht :?:

Hier mal ein einfacheres Beispiel :

Code: Alles auswählen

Macro test(a=1, b=1)
  a#b "Hallo Hallodri"
EndMacro

test(de,bug) 
beim letzten Codebeispiel verstehe ich leider auch nix. Muss da jetzt ...(de,bug) stehen? Ich habe mal mit was anderen probiert und erhalte einen Syntax error in der Zeile. Also einfach mal test(kein,bug) gemacht.

Verfasst: 04.02.2006 03:42
von ts-soft
Falko hat geschrieben:

Code: Alles auswählen

Macro test(a=1, b=1)
  a#b "Hallo Hallodri"
EndMacro

test(de,bug) 
beim letzten Codebeispiel verstehe ich leider auch nix. Muss da jetzt ...(de,bug) stehen? Ich habe mal mit was anderen probiert und erhalte einen Syntax error in der Zeile. Also einfach mal test(kein,bug) gemacht.
Ich hab es mir inzwischen erklären lassen.
Das a#b bewirkt das die beiden Parameter (De und Bug) zusammengeführt werden, so das überhaupt eine Ausgabe erfolgt, nämlich durch Debug :wink:
Lustige und nützliche Sache

Das Makro erzeugt also

Code: Alles auswählen

Debug "Hallo Hallodri"

Verfasst: 04.02.2006 03:46
von Falko
Thomas ich danke dir. Jetzt habe ich es verstanden. Ich habe mich zu
sehr von den obigen Parametern irritieren lassen. Das hat mich etwas
irrtiert. Aber jetzt ist alles klar.

Nochmals vielen Dank Thomas ;)

MfG Falko :allright:

Verfasst: 04.02.2006 03:49
von ts-soft
Ich bin schon seit Stunden am kämpfen, alles zu verstehen, aber macht
Spaß, weil es alles Sachen sind, die ich schon immer haben wollte :D

Verfasst: 04.02.2006 03:54
von Falko
ts-soft hat geschrieben:Ich bin schon seit Stunden am kämpfen, alles zu verstehen, aber macht
Spaß, weil es alles Sachen sind, die ich schon immer haben wollte :D
Du das geht mir genauso. Ich hatte zwar erhofft für mein Voltcraft AD-USB 4 Modul dessen OCX eine Möglichkeit in der PB zu haben, und suche
schon eine ganze Zeit in den tollen neuen Funktionen hindurch.

Du hast Recht, es macht jetzt richtig Spass alles auszuprobieren. Zwar komme ich durch die Vielfalt nicht auch mein Ergebnis, aber die Macrofunktion ist schon mal eine super Sache.

Klappt jetzt prima mit Macro :allright: .

Code: Alles auswählen

Macro test(a=1, b=1) 
  a#b ("Deine Nachricht","Hallo Hallodri") 
EndMacro 

test(message,requester) 

Verfasst: 04.02.2006 05:12
von otto
Gratulation und Vielen Dank

für die umfangreiche Erweiterung
durch ein weiteres kostenloses Update.

Verfasst: 04.02.2006 09:37
von Kukulkan
Huiiii....

Da ist ja ein tolles 'Update' draus geworden. :allright:

Ich finde die Namensänderungen der Befehle sehr gelungen und absolut fällig. Natürlich muss man jetzt umlernen, aber die neuen Namen sind einfach eindeutiger und logischer. Im neuen Syntax macht PB einen viel professionelleren Eindruck. Es wirkt nun sehr durchdacht.

Mir persönlich gefällt das mit den unbegrenzt langen Strings, schnellen File-Befehlen und erweitertem Select-Case am besten. Auch die neuen Datentypen gefallen mir (Doubles und Quads). So wird sicher jeder etwas finden, was er lange vermisst hat. Mit PB V4 macht PureBasic einen grossen Schritt nach vorne. Gratulation an Fred!

Volker

PS. Evtl. nimmt jemand Didelphodons aufruf Ernst und schreibt einen einfachen Converter um die Fleißarbeit zu reduzieren? Mit ein paar durchdachten FindString()- und ReplaceString()-Befehlen ist ja schon vieles (natürlich nicht alles) gegangen.

Verfasst: 04.02.2006 10:55
von strgalt
Morgen,

gute Arbeit :allright:

Dann noch eine Frage:
Wann wird die Database- Lib angepasst: GetDatabaseDouble und GetDatabaseQuade ?