ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 31.08.2001

Diese Seite wurde zuletzt aktualisiert am 31.08.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Vielfache eines Strings

Zurück...


Anzeige

(-hg) mailto:hg_multistring@aboutvb.de

Die mehrfache Verkettung eines Strings können Sie eigentlich ganz einfach in einer Schleife erledigen:

Dim l As Long
Dim nResultat As String

For l = 1 To 10
  nResultat = nResultat & "Hallo"
Next 'l

Mit zunehmender Länge des aneinander zu hängenden Strings (Füll-String) und mit zunehmender Anzahl wird die Schleife unverhältnismäßig langsamer. Denn bei jedem Anfügen wird der bereits fertig gestellte Teil einmal umkopiert. Erheblich schneller geht es, den Ergebnis-String einmal in der leicht zu errechnenden Soll-Länge mittels der String-Funktion von Visual Basic mit einem beliebigen Zeichen vorbelegt zu erstellen und anschließend nur noch mittels der Mid$-Funktion den Füll-String nacheinander darüber zu kopieren:

Dim l As Long
Dim nResultat As String
Dim nLen As Long

nLen = Len("Hallo")
nResultat = String$(10 * nLen, 0)
For l = 1 To 10
  Mid$(nResultat, l * nLen - 1, nLen) = "Hallo"
Next 'l

Wenn der zu füllende String bereits gegeben ist, erübrigt sich seine Erstellung. Der weiteren Verwendbarkeit halber gleich in eine Prozedur gepackt, sähe das so aus:

Public Sub FillMultiString(Str As String, FillStr As String)
  Dim l As Long
  Dim nPos As Long
  Dim nLen As Long
  Dim nLenMax As Long
  
  nLenMax = Len(FillStr)
  nLen = Len(Str)
  nPos = 1
  Do While nPos <= nLenMax
    Mid$(FillStr, nPos, nLen) = Str
    l = l + 1
    nPos = l * nLen + 1
  Loop
End Sub

Hierbei machen wir uns zu Nutze, dass das Überschreiben mittels Mid$ über das Ende eines gegebenen Strings hinaus ohne Folgen bleibt, wenn die Gesamtlänge nicht genau bündig in einem Vielfachen des Teil-Strings aufgeht. Die vorhergehende Aufgabe, einen String n-mal zu verketten, erledigen Sie nun unter Verwendung dieser Prozedur wie folgt - auch hier gleich wieder in eine praktische Funktion verpackt:

Public Function MultiString(Str As String, ByVal Count As Long) _
 As String

  MultiString = String$(Count * Len(Str), 0)
  FillMultiString Str, MultiString
End Function

Für den gewissermaßen dazwischen liegenden Spezialfall, dass der Ziel-String zwar noch nicht gegeben ist, aber eine maximale Länge vorgegeben ist, können Sie dazu den Aufruf von FullMultiString wie folgt verkürzt in eine Funktion packen:

Public Function MultiStringLength(Str As String, _
 ByVal Length As Long) As String

  MultiStringLength = String$(Length, 0)
  FillMultiString Str, MultiStringLength
End Function

Sollen zwischen die Teil-Strings jeweils ein Trenn-String eingefügt werden, können Sie natürlich gleich den Teil-String und den Trenn-String zusammengefügt übergeben und anschließend den überzähligen Trenn-String wieder abschneiden. Doch auch hier würden Sie wieder den Geschwindigkeitsverlust hinnehmen müssen, den das dabei erforderliche zusätzliche Kopieren des Ergebnis-Strings mit sich bringen würde. Den Geschwindigkeitsverlust vermeiden Sie, wenn der Ergebnis-String gleich von vornherein entsprechend kürzer angelegt wird:

Public Function MultiStringSep(Str As String, _
 ByVal Count As Long, Separator As String) As String

  MultiStringSep = _
   String$(Count * (Len(Str) + Len(Separator)) - 1, 0)
  FillMultiString Str & Separator, MultiStringSep
End Function

Modul modMultiString (modMultiString.bas - ca. 1,1 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer