PureBasic 4.00 Beta1 released!

Ankündigungen PureBasic oder die Community betreffend.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

@MLK:
Wie will man denn was kompileren was erst später da steht?
Du kannst doch alles erst benutzen wenn es deklariert ist.
Konstanten, Variablen, Proceduren

Edit: Wieder mal jemand schneller und auch noch besser erklärt. :freak:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Batze hat geschrieben: Edit: Wieder mal jemand schneller und auch noch besser erklärt. :freak:
Mach dir nichts draus, nächstes Mal lasse ich mir etwas mehr Zeit ;)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

freedimension hat geschrieben:
MLK hat geschrieben:
Deeem2031 hat geschrieben:Du musst das Global vor die Proceduren schreiben, das war aber vorher auch schon so..
ich habe immer noch nicht kapiert warum das so ist. ist das wirklich so gewollt oder einfach das ergebnis der umsetzung? global ist doch global, nicht ForwardGlobal..
PB ist ein single pass compiler, d.h. er arbeitet den Quelltext nur einmal durch und übersetzt ihn dann direkt. Woher soll der Parser nun wissen, dass eine Variable innerhalb einer Prozedur im nachfolgenden Code einmal als Global definiert sein wird?
so schwer ist das doch nicht zu realisieren. sollte meiner meinung nach dringend gemacht werden. ist das in anderen sprachen auch so?
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Danke dir, Deeem :)
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Hallo.
Danke erstmal, ich wußte bisher nicht das es ein SinglepassCompiler ist.
Bisher hatte ich meißt eine Include für alle Declarationen und daher stand sie am anfang, jetzt aber baue ich fast zu 100% auf Proceduren und da kam das Problem wohl auf.

Und Batze, wie schon angemerkt von ich glaube freedimension kann man sehr wohl sachen verwenden die erst später im Text kommen. Entweder wenn es der Compiler mehr als einmal durchläuft, oder selbst dann, wenn die interne umwandlung das zulassen würde.

Es ging ja nicht darum eine globale Variable zu nutzen die noch nicht global declariert wurde, sondern das diese Variable vorkommt im Code bevor sie declariert wird.
Wenn man nun mit Proceduren arbeitet kommt das eigendlich ständig vor.
Diese werden oft durch includes eingebunden und da PB nun sogar nur die Proceduren einbindet die man auch aufruft wäre es doch an sich blöd wenn man variablen bzw. globale Variablen IMMER declariert, obwohl sie in diesem programm nicht genutzt werden. Deshalb lasse ich das oft die proceduren übernehmen und dann steht das halt nicht am Anfang und wenn ich es manuell mache, dann müßte das immer vor dem includeaufruf sein.
ist ja kein problem wo ich es jetzt (wieder) weiß, aber kann schon mal ein paar Probleme bereiten.

Ich werde das alles später oder morgen mal testen und mich dann an die Mutexfunktionen rann machen.

[edit]
TryLockMutex(Mutex), wie funktioniert das? Ich werden wohl aus dem englischem Satz dazu nicht schlau, denn egal was ich versuche, bei aufruf bekomme ich immer nur ne NULL zurück. egal ob ein Thread oder mehrere TryLockMutex(Mutex) aufrufen oder einer nur LockMutex(Mutex)
und der andere TryLockMutex(Mutex), egal ob der eine gerade gelockt ist oder nicht. irgenwas verstehe ich daran nicht. kann mir jemand mal den unterschied zwichen Beiden erklären.
Danke
Toshy

Lange lebe Purebasic 12.94
Zuletzt geändert von Toshy am 05.02.2006 04:12, insgesamt 1-mal geändert.
Benutzeravatar
al90
Beiträge: 1101
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Also dann erstmal auch ein lob von mir. PB40 Ist echt gut geworden. :allright:

Hab auch schon eins meiner Projecte (in 2 stunden) angepasst und bin begeistert
wie einfach es war. (Hatte es mir vorher komplizierter vorgestellt)
Das mit den Lokalen Arrays ist sicher noch ein problem der frühen Beta
und ich denke daß das PB-Team das auch noch in den griff bekommt.

Eine sache macht mir allerdings noch Kopfschmerzen. Das wegfallen des
UseDirectory() Befehls. Habs bis jetzt noch nicht hinbekommen ein Verzeichniss komplett mit unterdirs auszulesen, muss dabei aber auch sagen
das ich es nur ein paar minuten probiert habe. Na denn, immer weiter so. :allright:
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

al90 hat geschrieben: Das mit den Lokalen Arrays ist sicher noch ein problem der frühen Beta
und ich denke daß das PB-Team das auch noch in den griff bekommt.
Was meinst du mit "den Lokalen Arrays"?

@Friedrichs: Es gehört zum guten Programmierstil, seine globalen Variablen möglichst zusammen und an erster Stelle zu deklarieren. So kommt es erst gar nicht zu Problemen.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

jaPBe funzt gottseidank größtenteils mit der 4.0 Beta :)
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Auch ich kann nur sagen, dem Changelog nach zu Urteilen: Gratz zur v4! Viele Änderungen drin, die ich schon lange vermisse ;) Freue mich schon auf die Final (mit Help ;))

Gleich ne Frage zu SetGadgetColor(), wird dort auch transparent verfügbar sein (für den Background)??
Und:
Im Test war merklich zu spühren, wenn ich ein Gadget zeichne, dann die Farbe(n) ändere, kann beim Start des Programms die Änderung der Farbe(n) "mitverfolgt" werden, d.h. die Farbänderungen am Gadget passieren stark zeitverzögert! Zwar lies sich die Verzögerung nicht zeitlich messen (via elapsedmilliseconds), sichtbar war sie aber locker.
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Die neue Farbe kann erst gezeichnet werden wenn das Fenster die WM_PAINT Nachrichten verarbeitet.
Das passiert aber erst wenn du WindowEvent() oder WaitWindowEvent() aufrufst.
(das ist unter Windows eben so)
Wenn man also das Fenster öffnet, die Farbe ändert, dann aber noch einige andere
Sachen macht befor der Event-Loop startet, dann sieht man das eben.

Es hilft hier das Fenster mit #PB_Window_Invisible zu erstellen, alle Gadgets
zu erzeugen und Farben zu ändern und es dann erst mit HideWindow() anzuzeigen.
(sieht übrigens generell besser aus wenn man es so macht, weil man sonst oft
auch den Aufbau der Gadgets sieht, wenn der PC beim Starten des Programs gerade voll ausgelastet ist)
Antworten