Seite 1 von 1

MSet () - Mehrfach-InsertString ()

Verfasst: 08.01.2016 06:57
von es_91
Hi.

Verdammt. ich bin sehr vergesslich und habe vergessen, wie die Funktion hieß, mit der man, wie bei Space (Länge), eine Zeichenkette variabler Länge mit einem bestimmten Zeichen machen kann.

Praktisch so:

Code: Alles auswählen

Procedure$ StringChain (String$, Length)
  
  Protected index
  Protected produce$
  
  For index = 1 To Length
    
    produce$ = produce$ + String$
  Next
  
  ProcedureReturn produce$
EndProcedure
Nun habe ich ja eine Lösung ... aber gab es soetwas nicht irgendwo in PureBasic oder verwechsle ich das mit VB ? (die String-Bibliothek enthält so einen Befehl scheinbar nicht.)

Also quasi ein Space () mit beliebigem Fülltext, nicht zwangsläufig Leerzeichen.

//Nachtrag: Ich habe LSet () gefunden. Das kann man so verwenden, um aus leeren Strings Strings bestimmter Zeichen variabler Häufung zu machen. Aber LSet () funktioniert nur mit einem (!) Zeichen als Fülltext.

Code: Alles auswählen

; LSet (#Empty$, 3, Space (1)) statt Space (3)

Debug "Drei Leerzeichen: " + Chr (34) + LSet (#Empty$, 3, Space (1)) + Chr (34)
---------------


Ich habe das mal zur Serienreife gebracht:

Code: Alles auswählen

; 
; MSet () ... Insert a string several times times into another string

Procedure$ MSet (String$, StringToInsert$, Position, NbOccurrences = 1)
  
  Protected index
  Protected produce$
  
  For index = 1 To NbOccurrences
    
    produce$ = produce$ + StringToInsert$
  Next
  
  ProcedureReturn InsertString (String$, produce$, Position)
EndProcedure

Code: Alles auswählen

Debug MSet ("Guten-- Hatschi!", "Ha...", 9, 3)
Debugger hat geschrieben:Guten-- Ha...Ha...Ha...Hatschi!

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 16:04
von Sicro

Code: Alles auswählen

Macro RepeatString(String, Counts)
  ReplaceString(Space(Counts), " ", String, #PB_String_NoCase, 1, Counts)
EndMacro

Debug RepeatString("bla ", 7)

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 17:01
von es_91

Code: Alles auswählen

Macro RepeatString (String, Counts)
  ReplaceString (Space (Counts), Space (1), String, #PB_String_NoCase, 1, Counter)
EndMacro

If RepeatString("bla ", 7) = Space (7)
  
  Debug "Das war wohl nichts."
EndIf
^^

Code: Alles auswählen

Macro RepeatString (String, Counts)
  
  ReplaceString (Space (Counts), Space (1), String, #PB_String_NoCase, 1, Counts) ; CountS !
EndMacro

Debug RepeatString ("bla ", 7)

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 17:48
von MenschMarkus
Wie wärs denn hiermit?

Code: Alles auswählen

String0.s = "Hello ! Here is a Program"
String1.s = "World"
Debug InsertString(String0,String1,FindString(String0,Chr(32))+1)
String0.s = "Hello Master! Here is a Program"
Debug ReplaceString(String0,"Master",String1)

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 17:58
von NicTheQuick
MenschMarkus hat geschrieben:Wie wärs denn hiermit?

Code: Alles auswählen

String0.s = "Hello ! Here is a Program"
String1.s = "World"
Debug InsertString(String0,String1,FindString(String0,Chr(32))+1)
String0.s = "Hello Master! Here is a Program"
Debug ReplaceString(String0,"Master",String1)
Was hat das mit dem Thema zu tun?

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 19:21
von Nino
NicTheQuick hat geschrieben:Was hat das mit dem Thema zu tun?
Das hat mit dem Thema ungefähr so viel zu tun wie der Titel dieses Threads. :mrgreen:

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 19:46
von Sicro
@es_91: Genau, überall "Counts", sorry.

Re: MSet () - Space () für beliebige Zeichenketten

Verfasst: 08.01.2016 20:09
von es_91
Nino hat geschrieben: Das hat mit dem Thema ungefähr so viel zu tun wie der Titel dieses Threads. :mrgreen:
Korrigiert. :D