String = Procedure(argument) funktioniert nicht

Anfängerfragen zum Programmieren mit PureBasic.
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

String = Procedure(argument) funktioniert nicht

Beitrag von TWELVE »

Hallo,

wer hat eine Erklärung für folgendes "Phänomen":

--Beispiel 1-----------------------------
string.s = MeineProcedure( string2.s)

string.s bleibt leer

---Beispiel 2------------------------
MeineProcedure(string2.s)

string.s = result.s

string.s hat den korrekten Inhalt

-----------------------------------------------

Procedure.s Meine Procedure(string2.s)

...

result = anderer string

ProcedureReturn result$

-----------------------------------------------

Das Problem ist zutage getreten, als ich die Procedure innerhalb eines Threads aufgerufen habe.Deshalb habe ich geschlußfolgert, das dies bei Aufruf außerhalb eines Threads funktionieren würde.Jetzt hab ich mir meinen Code nochmal angesehen und festgestellt, das ich es außerhalb des Threads auch nicht anders mache.

result.s ist global, deshalb kann ich darauf auch von außerhalb zugreifen.Macht PureBasic einen Unterschied zwischen result.s und result$ ...? Das wäre ja ne mögliche Erklärung..?

Grüße

TWELVE
Zuletzt geändert von TWELVE am 02.03.2008 13:16, insgesamt 1-mal geändert.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: String = Procedure(argument) funktioniert nicht

Beitrag von edel »

TWELVE hat geschrieben: Macht PureBasic einen Unterschied zwischen result.s und result$ ...? Das wäre ja ne mögliche Erklärung..?
Jup, sind 2 Variablen
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: String = Procedure(argument) funktioniert nicht

Beitrag von AND51 »

edel hat geschrieben:
TWELVE hat geschrieben: Macht PureBasic einen Unterschied zwischen result.s und result$ ...? Das wäre ja ne mögliche Erklärung..?
Jup, sind 2 Variablen
Lies dir dazu bitte die Seite "Variablen, Typen und Operatoren" in der Hilfe durch, da steht genau das (und noch viel mehr).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
TWELVE
Beiträge: 72
Registriert: 01.04.2007 18:33

Beitrag von TWELVE »

Jup, sind 2 Variablen

Lies dir dazu bitte die Seite "Variablen, Typen und Operatoren" in der Hilfe durch, da steht genau das (und noch viel mehr).
Schon gut..:D Ich verwende eigentlich keine Variablen mit $ am Ende, ich hab mir vor längerem angewöhnt, .s zu nehmen.Das mit dem $ ist eine Altlast aus meinen PureBasic Anfangstagen und da die entsprechenden Routinen funktionierten, ist mir das erst jetzt aufgefallen.Ansonsten hat jede Variable zu jeder Zeit das .typ hintendran, also nicht nur bei der Deklaration, damit ich immer weiß, von welchem Typ sie ist.Macht Sinn, oder..?

Wozu soll das eigentlich gut sein, zwischen $ und .s zu unterscheiden...?

Grüße

TWELVE
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

$ ist ein eigener "Buchstabe" der zur Variable gehört das .s ist ein Typ.

Genauso wir : #LF = 10 ergibt und #LF$ mit das Zeichen ausgibt
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja in ganz alten BASIC-Varianten war das halt so, da war a eine Zahl und a$ ein String. Ich fand's irgendwie cool und benutze es heute noch. In QBasic wurde das noch erweitert, a% war dann glaub ein int usw, aber das war mir dann auch zu umständlich ;)

Aber wie gesagt, das $-Zeichen gefällt mir irgendwie besser als .s, drum benutz ich das in PureBasic auch noch heute :)


EDIT: Und ich spreche es als "s" aus ;) a$ war bei mir nie "a-Dollar", sondern immer "ah eß" ;) und name$ ist bei mir "nameß" und nicht "name-Dollar" ;) würde mal gern wissen bei wem das genauso ist
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

ZeHa hat geschrieben:EDIT: Und ich spreche es als "s" aus ;) a$ war bei mir nie "a-Dollar", sondern immer "ah eß" ;) und name$ ist bei mir "nameß" und nicht "name-Dollar" ;) würde mal gern wissen bei wem das genauso ist
Also ich führe keine selbstgespräche beim programmieren ^^ aber wenn ich laut denke dann sage ich nicht "nameß" sonder bei mir kommt sobalt ich das $ sehen das wort String in den Kopf, sodass ich dieses Zeichen auch String nenne. "Text$" würde dann ausgesprpchen "Textstring" heißen manchmal aber auch Bei "Wert$" wirds zu "Stringwert"
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich benutze $ bei kleinen tools von ein paar zeilen (explicit disabled). aber in normalen projekten immer .s.

i.s ja wur$t 8)
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

STARGÅTE hat geschrieben:
ZeHa hat geschrieben:EDIT: Und ich spreche es als "s" aus ;) a$ war bei mir nie "a-Dollar", sondern immer "ah eß" ;) und name$ ist bei mir "nameß" und nicht "name-Dollar" ;) würde mal gern wissen bei wem das genauso ist
Also ich führe keine selbstgespräche beim programmieren
Ich manchmal schon.
Und ich spreche immer alles so aus, wie es da steht... :lol:
name.s => name eß
anzahl.l => anzahl el
text$ => text dollar (in Perl steht das $ ja immer vorn, dann nenne ich es "dollar text")

Strukturierte Variablen lese ich immer in der Form Variablenname+Feldname:

Code: Alles auswählen

info.POINT        ; gelesen: info point
info\x=5          ; gelesen: info x gleich fünf
info\y+1          ; gelesen: info y plus 1
Merhfach strukturiete Variablen hatte ich noch nie, kann mir aber denken, sie nach dem gleichen Muster zu "lesen"... 8)


Übrigens benutze ich meistens .s anstelle von $, weil ich .s nur bei der Definition einer Variablen brauche; das $ hingegen ist permanenter Bestandteil des Variablennamens und würde mir jedes Mal einen zusätzlichen Tastendruck abringen (ohhh, ich armer....) :lol:

Code: Alles auswählen

a.s
a
a

a$
a$
a$
Ergebnis: Beispiel 1 spart schon nach zweimaligem Aufruf von 'a' schon 1 Zeichen.
Vorteile:
-Verkürzung des Codes => Übersichtlichkeit & Dateigröße
-Verlängerung der Lebensdauer der Tastatur, insbesondere der Taste '4'
- Weniger Tipparbeit => Coden ist nicht mehr sooo anstrengend
-Zeiteinsparung beim Aufrufen/Tippen der Variable 'a'
:mrgreen:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

AND51 hat geschrieben:Und ich spreche immer alles so aus, wie es da steht... :lol:
name.s => name eß
anzahl.l => anzahl el
text$ => text dollar (in Perl steht das $ ja immer vorn, dann nenne ich es "dollar text")

Strukturierte Variablen lese ich immer in der Form Variablenname+Feldname:

Code: Alles auswählen

info.POINT        ; gelesen: info point
info\x=5          ; gelesen: info x gleich fünf
info\y+1          ; gelesen: info y plus 1
Merhfach strukturiete Variablen hatte ich noch nie, kann mir aber denken, sie nach dem gleichen Muster zu "lesen"... 8)
Ich auch ... ich lese aber den Punkt bei Variablendekleration mit ... nur
den Backslash ("") lese ich nicht mit. $-Zeichen wird natürlich auch mit
gelesen.

$ hab ich auch zu anfang viel verwendet ... kam ja frisch von QBasic :lol:
Aber inzwischen immer weniger, bzw. vorallem dann, wenn ich für etwas
eine Zahlenvariable und eine Stringvariable brauche, dann nutze ich

Code: Alles auswählen

Zehn.l = 10
Zehn$ = "10"
und dafür ist das Feature "$" in PB sogar sehr nützlich.
... ansonnsten hab ichs mir aber eigentlich inzwischen abgewöhnt <)

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten