Seite 2 von 2

Verfasst: 11.12.2004 09:53
von Falko
>> kommt man nicht aus der gewohnheit...

nööö, aber aus einigen Beispielen aus der Hilfe wie z.B.:
Chr()

Syntax

Text$ = Chr(ASCII-Wert)
Beschreibung

Gibt das zum angegebenen ASCII Wert gehörende Zeichen zurück.
a$ = Chr(33) ; a$ enthält das Zeichen "!"

Unterstützte OS

Windows, AmigaOS, Linux

String - Inhaltsverzeichnis

Verfasst: 18.02.2005 17:31
von Skiller
Hallo Folks,

passt vielleicht ganz gut hier rein; und zwar:

wie kann ich den Typ einer Var abfragen?

Var1$ = "Hallo"
Var2 = 12345

also z.B. TYPE("Var1") = "C" bzw. "S"
TYPE("Var2") = "N"


Hat jemand ´ne Idee ?

Skiller

Verfasst: 18.02.2005 23:29
von Lars
Skiller hat geschrieben:wie kann ich den Typ einer Var abfragen?
Gar nicht. Ist aber auch in diesem beispiel nicht so besonders nützlich,
eigentlich weißt du, was für einen Typ deine Variable jetzt hat.

Verfasst: 19.02.2005 22:19
von Skiller
Danke erstmal für deine Antwort Lars.
War vielleicht nicht ganz verständlich ausgedrückt. Hier mal das Beispiel dazu. Wir kann ich hier abfragen, ob uVar String o. numerisch ist?

Code: Alles auswählen

Procedure _SayText(x,y,uVar)
  StartDrawing(ScreenOutput())
  Locate(x,y)
  BackColor(0,0,0)
  FrontColor(255,255,255)
  if TYPE(uVar) = "C"  ; <-- so in der Art
     DrawText(uVar)
  else
     DrawText(Str(uVar))
  endif
  StopDrawing()
EndProcedure  
Ein Errorhandle wär vielleicht eine Mög. aber die fängt der Compiler leider
schon vorher ab.

uVar = "Hallo" -> Compilerstop
_SayText(100,100,uVar)

oder

nVar = 10
uVar = Val(nVar) -> CompilerStop
_SayText(100,100,uVar)


vielleicht hast du ja eine optimalere Lösung, um nicht immer wieder die
Standardvor u.- Nachfunktionen für DRAWTEXT() aufzurufen.

Gehört zwar nicht hierher, aber hab auch da im Board keine Antwort gefunden.
Ist das Fenster Child / Parent handling auch in Linux möglich?
In der Hoffnung euch nicht allzusehr zu belasten....

Skiller

Verfasst: 19.02.2005 23:05
von Epyx
Wenn du nur wissen willst ob Nummerisch oder nicht dann würde ich es folgendermaßen machen.

Code: Alles auswählen

Declare.l Nummeric(Var$)


A$="1234567890"
Debug Nummeric(A$)

A$="12A567B890"
Debug Nummeric(A$)



Procedure.l Nummeric(Var$)
 Ret=1
  For t=1 To Len(Var$)
   ascii = Asc(Mid(Var$,t,1))
   If ascii<48 Or ascii>57 : Ret=0 : EndIf
  Next t
  ProcedureReturn Ret
EndProcedure

Verfasst: 20.02.2005 00:36
von bluejoke
Du musst doch beim Programmieren wissen, was deine Variable für ein Typ ist, oder hast du zwei verschiedene Initialisierungen?
In dem Fall würde ich eine zusätzliche Variable nehmen, in der dann steht, welcher Typ verwendet wird.

Verfasst: 20.02.2005 01:01
von Kaeru Gaman
ich würde den typ in der Proc-Deklaration angeben

Code: Alles auswählen

Procedure _SayText(x.l,y.l,uVar.s)
damit muss eine zahl mit z.b.

Code: Alles auswählen

_SayText(50,50,Str(Var))
übergeben werden....

ist eigentlich so üblich, dass der Var-typ festgeschrieben wird.

ok, andere sprachen kennen den typ 'variant', aber dessen verarbeitung ist auch nicht einfach...

Verfasst: 22.02.2005 22:23
von Skiller
Hallo Freunde,

erstmal entschuldigung, dass ich mich noch nicht für eure Beiträge bedankt habe, aber hatte den Kopf sehr voll.
Nachdem ich jetzt alles nochmal getestet hatte schien mir Kaeru´s Version jedoch am plausibelsten.

DANKE jungs!!