MSet () - Mehrfach-InsertString ()

Anfängerfragen zum Programmieren mit PureBasic.
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

MSet () - Mehrfach-InsertString ()

Beitrag 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!
Zuletzt geändert von es_91 am 08.01.2016 20:09, insgesamt 1-mal geändert.
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

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

Beitrag von Sicro »

Code: Alles auswählen

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

Debug RepeatString("bla ", 7)
Zuletzt geändert von Sicro am 08.01.2016 19:28, insgesamt 1-mal geändert.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

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

Beitrag 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)
MenschMarkus
Beiträge: 227
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

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

Beitrag 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)
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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?
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

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

Beitrag 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:
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

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

Beitrag von Sicro »

@es_91: Genau, überall "Counts", sorry.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

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

Beitrag 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
Antworten