Seite 2 von 8
Verfasst: 05.08.2006 10:59
von sharkpeter
So, neue Version Online:
- optionale Fehlerrückgabe
- 3 neue Funktionen
@TS,
es gibt wohl einige Funktionen, wo der Wert wirklich 0 annehmen kann oder
gar negativ ist. Soweit so gut. Mit dieser Version kann man die Fehlerrückgabe
entsprechend unterdrücken. Einfach das Flag weglassen oder auf 0 setzen.
Mit den Fehlern in eine eigene Variable geht nicht, das wird nach der Wandlung
in eine Lib unterbunden, egal wo du die Variable auf Global stellst.
Gruß Jens
Verfasst: 05.08.2006 17:18
von ts-soft
sharkpeter hat geschrieben:
Mit den Fehlern in eine eigene Variable geht nicht, das wird nach der Wandlung
in eine Lib unterbunden, egal wo du die Variable auf Global stellst.
Gruß Jens
Wieviele Libs soll ich aufzählen, die es so machen
Zum Beispiel SQLite3 von Kiffi. Hier ein Beispielcode, der geht mit Tailbite
Code: Alles auswählen
Enumeration ; Error
#Error_OK ; 0
#Error_Schwachsinn
EndEnumeration
Global FehlerMeldung.s
Global FehlerNummer.l
ProcedureDLL.s GetMyLastErrorMsg()
ProcedureReturn FehlerMeldung
EndProcedure
ProcedureDLL GetMyLastErrorNr()
ProcedureReturn FehlerNummer
EndProcedure
ProcedureDLL Bla()
FehlerMeldung = ""
FehlerNummer = 0
; Code
If Error
FehlerMeldung = "So ein schwachsinn"
FehlerNummer = #Error_Schwachsinn
EndIf
EndProcedure
Aber nur ohne UNICODE
Gruß
Thomas
Verfasst: 06.08.2006 17:20
von sharkpeter
@TS,
und hast du es selber mal ausprobiert? Nein?
Wenn doch so hättest du merken müssen, das egal wo du die "Fehler"
als globale Variable deklarierst deren Inhalt nicht zurückgegeben wird.
Dabei ist es vollkommen egal, ob du innerhalb der Lib die Variablen Global
setzt, dies außerhalb tust oder ob du hingehst und sagst, OK, ich mache die
in meinem eigenen Code Global und innerhalb der Procedure wird sie
beschrieben mit dem entsprechenden Inhalt.
Am besten kannst du das sehen, wenn du eine Variable als String deklarierst.
Er wird nach der Abfrage Leer sein.
Und das mit den Konstanten kannst du offenbar auch knicken.
Und zu Unicode, zum Glück geht das mit TB noch nicht, sonst hätte ich ja
noch mehr Arbeit
Gruß Jens
Verfasst: 06.08.2006 17:27
von ts-soft
Funktioniert einwandfrei:
Hier der Code zum Testen:
Code: Alles auswählen
Enumeration ; Error
#Error_OK ; 0
#Error_Schwachsinn
EndEnumeration
Global FehlerMeldung.s
Global FehlerNummer.l
ProcedureDLL.s GetMyLastErrorMsg()
ProcedureReturn FehlerMeldung
EndProcedure
ProcedureDLL GetMyLastErrorNr()
ProcedureReturn FehlerNummer
EndProcedure
ProcedureDLL Bla()
FehlerMeldung = "Hallo Jens"
FehlerNummer = 0
; Code
If Error
FehlerMeldung = "So ein schwachsinn"
FehlerNummer = #Error_Schwachsinn
EndIf
EndProcedure
Speichern und TailBiten
anschließend:
und der Debugger sagt:
PureBasic-Debugger hat geschrieben:Hallo Jens

Verfasst: 06.08.2006 17:31
von ts-soft
>> Und zu Unicode, zum Glück geht das mit TB noch nicht
Aber man kann sich behelfen, wie ich bereits mehrmals gepostet habe, so
das die Lib auch unter Unicode zumindestens die ASCII-Zeichen zurückgibt.
Ich hab im moment nur ein Projekt, das ist UNICODE, deswegen nutze ich
auch überwiegend Include-Dateien, weil UserLibs im moment unsinnig sind.
Verfasst: 06.08.2006 17:45
von sharkpeter
@TS,
so habe ich es noch nicht probiert. Aber so hast du recht.
Also wird die Lib bzw. alles was dort deklariert ist in sich als geschlossenes
System behandelt. Abgesehen von den Procedure Rückgaben dringt nichts
nach außen.
Hättest du doch gleich sagen können

, (lache mich gerade tot nebenher.)
So, nun hast du gewonnen und bekommst die Lib demnächst mit den einzelnen
Sachen, Rückgabe und Fehler separat. Scheiße, jetzt habe ich doch wieder
Arbeit am Hals und ich wollte mal mit anderen Sachen weitermachen.
Gruß Jens
Verfasst: 06.08.2006 17:52
von ts-soft
sharkpeter hat geschrieben:
Also wird die Lib bzw. alles was dort deklariert ist in sich als geschlossenes
System behandelt. Abgesehen von den Procedure Rückgaben dringt nichts
nach außen.
Hättest du doch gleich sagen können

, (lache mich gerade tot nebenher
Das ist der größte Vorteil von UserLibs, sie haben einen eigenen globalen
Scope. Wenn Du das nicht wußtest, wozu dann UserLibs? Nur wegen der
Syntaxvorschau
Alle was in einer UserLib global deklaiert wird, ist auch nur dort gültig, wie bei
normalen DLLs auch. Nur was Du exportierst per ProcedureDLL ist für den
Anwender unmittelbar erreichbar.
Diese Tatsache ist z.B. sehr wichtig für OOP, weil ansonsten ja eine echte
Kapselung in PB nicht möglich ist.
Gruß
Thomas
Verfasst: 06.08.2006 17:58
von sharkpeter
@TS,
nein, zugegeben das habe ich nicht gewußt.

aber geahnt. Aber diese
Tatsache steht in meiner Unterschrift
Die Syntaxvorschau hast du auch schon wenn du nur ProcedureDLL xyz()
schreibst, also das war es nicht.
Gruß Jens
Verfasst: 11.08.2006 12:19
von sharkpeter
@TS,
es ist vollbracht. Fehlermeldung getrennt von den Rückgaben.
@All
Update auf Version 2.02
- getrennte Fehlermeldung
- englische Hilfe (im deutschen File)
Gruß Jens
Verfasst: 24.09.2006 12:08
von sharkpeter
Update auf Version 2.03
- drei neue Funktionen (u.a. Shortcut erstellen)
- Hilfe gegliedert in Kapitel
Gruß Jens