Aktuelle Zeit: 28.10.2020 00:58

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Nth of String (JS: string[N])
BeitragVerfasst: 31.07.2014 20:15 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Habe mir mal Gedanken gemacht, wie man den direkten Zugriff auf einen Charakter in einer Zeichenkette ähnlich wie in JavaScript bewerkstelligen kann.
Code:
//JavaScript Code
var myString = 'Hallo Welt';

var Fourth = myString(0); // 'H' - Counter startet bei 0
var Fifth = myString(4); // 'o'


Heraus gekommen ist das hier. Ich habe versucht PeekC() zu umgehen und direkt per Pointer drauf zuzugreifen (zweckes Geschwindigkeit), aber innerhalb eines Macros ist es mir nicht gelungen. Und in einer Prozedure wäre der Geschwindgeitsvorteil wegen der Rumspringerei wieder weg (denke ich).

Code:
Macro Nth(_string,pos)
   Chr(PeekC(_string+(pos*SizeOf(Character))))
EndMacro

Define myString.s = "Hallo Welt"

Debug Nth(@"Hallo Welt", 0)   ; "H"
Debug Nth(@myString, 4)    ; "o"
Debug Nth(@"PureBasic", 0)   ; "P"


Wichtig ist nur, dass man das @ nicht vergisst.
Aber es scheint dann wenigstens keinen IMA zu geben, sondern direkt einen Compiler Error.

Zitat:
Parenthesis '(' are not allowed in string operations.


Zumindest beim Direktzugriff. Bei einem Umweg über Pointer gibt es einen IMA.

Code:
*ptr = @myString
*ptr=1 ;Verursacht logischerweise einen IMA
Debug Nth(*ptr, 1)


Vielleicht weiß ja einer von den Profies hier, ob/wie man das verbessern kann. Schneller, sicherer, etc. Falls ich nicht der einzige bin, der so eine Funktion nützlich findet^^

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nth of String (JS: string[N])
BeitragVerfasst: 31.07.2014 20:38 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Wieso wolltest du das @ nicht mit ins Macro schreiben?
Code:
 Macro Nth(_string,pos)
   Chr(PeekC(@_string+(pos*SizeOf(Character))))
EndMacro

Define myString.s = "Hallo Welt"

Debug Nth("Hallo Welt", 0)   ; "H"
Debug Nth(myString, 4)    ; "o"
Debug Nth("PureBasic", 0)   ; "P"

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nth of String (JS: string[N])
BeitragVerfasst: 31.07.2014 20:48 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Frag mich nicht. Daran hab ich gar nicht gedacht. :allright:

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Nth of String (JS: string[N])
BeitragVerfasst: 31.07.2014 21:33 
Offline
Benutzeravatar

Registriert: 27.02.2006 22:30
Wohnort: Neumünster
Code:
;Zeiger auf Strings

Structure t_CHAR     
   s.s {1}[0]   
EndStructure

a$ = "Hallo, dies ist ein Test"

*z.t_char = @a$

For j = 0 To Len(a$) - 1
   Debug *z\s[j]
Next

Debug "----------------------"
Debug "erweitert um Asciicode"

Structure tt_CHAR
   StructureUnion
      s.s {1}[0]
      c.c [0]
   EndStructureUnion
EndStructure

a$ = "Hallo, dies ist ein Test"

*zz.tt_char = @a$

For j = 0 To Len(a$) - 1
   Debug *zz\s[j] + " = " + *zz\c[j]
Next

Debug "-------------"
Debug "Paare aulesen"

Structure t2_CHAR
      s.s {2}[0]
EndStructure

a$ = "Hallo, dies ist ein Test"

*z2.t2_char = @a$

For j = 0 To (Len(a$) - 1) / 2
   Debug *z2\s[j]
Next

_________________
Purebasic 5.60 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye