Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Maximale Ausdehnung von Text mit VBS ermitteln.

Mitglied: Fraenky

Fraenky (Level 1) - Jetzt verbinden

29.09.2007, aktualisiert 30.09.2007, 5050 Aufrufe, 7 Kommentare

Ich brauche für das Layout einer Webseite die maximale Ausdehnung der einzufügenden Texte.

Hallo alle zusammen.

Ich möchte die maximalen Maße von Textblöcken ermitteln.

Das heißt, einmal die maximale Zeilenanzahl pro Textblock mit der Anzeige der ersten Zeile(Titel) und einmal die maximale Zeichenanzahl pro Zeile, ebenfalls mit der Anzeige der ersten Zeile des entsprechenden Textblocks.
Ich kann leider selber nur sehr wenig VBS und möchte hier mal nachfragen, ob mir da jemand weiterhelfen kann.

Dank und Gruß
Fraenky
Mitglied: bastla
29.09.2007 um 10:54 Uhr
Hallo Fraenky!

Die folgende Version erwartet die Übergabe des Pfades zum Textblock per Parameter (oder per Drag & Drop), wobei eine Überprüfung des übergebenen Dateipfades nicht vorgenommen wird:
01.
sTextBlock = WScript.Arguments(0) 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set oTextBlock = fso.OpenTextFile(sTextBlock, 1) 
04.
iZeilenNr = 0 
05.
iMaxLen = 0 
06.
Do While Not oTextBlock.AtEndOfStream 
07.
	sZeile = oTextBlock.ReadLine 
08.
	iZeilenNr = iZeilenNr + 1 
09.
	If iZeilenNr = 1 Then sErg = sZeile 'erste Zeile 
10.
	If Len(sZeile) > iMaxLen Then iMaxLen = Len(sZeile) 
11.
Loop 
12.
sErg = sErg & vbCrLF & _ 
13.
	CStr(iZeilenNr) & " Zeile(n), maximale Länge: " & CStr(iMaxLen) 
14.
MsgBox sErg
Grüße
bastla

[Edit] Ausgabetext zur Berücksichtigung einzeiliger Textblöcke auf "Zeile(n)" geändert. [/Edit]
Bitte warten ..
Mitglied: Fraenky
29.09.2007 um 12:42 Uhr
Hallo bastla.
Danke für Deine Antwort.
Leider war meine Aufgabenstellung noch nicht 100% beschrieben.
In dem Dokument existieren viele Textblöcke(Lieder).
Um mein Layout möglichst gut zu gestallten, möchte ich die größten Textblocks kennen.
Jeder neue Textblock hat am Anfang eine Zahl, also z.B: "21. Liedtitel" und danach eine Leerzeile. Danach kommen die Strophen, die mit einer Leerzeile getrennt sind.
Am Ende eines jeden Textblocks sind zwei Leerzeilen, eine Ansprungmarke für den nächsten Textblock, z.B: joa21 und noch eine Leerzeile.
Zur Identifizierung eines neuen Textblocks sollte aber die Zahl am Anfang ausreichen.
Zur Ermittlung des Textblocks mit der höchsten Zeilenanzahl reicht mir die Angabe der Zeilen von Zahl zu Zahl, also von Liedanfang zu Liedanfang mit der Ausgabe im Fenster mit Zeilenanzahl und erster Zeile(Liedtitel), also z.B.
124. Liedtitel hat mit 26 Zeilen die meisten Zeilen.
Weiterer Durchlauf zur Ermittlung des Textblocks mit den meisten Zeichen pro Zeile zur Ermittlung der maximalen Breite mit der Ausgabe der Zeichen und der ersten Zeile des entsprechenden Textblocks, also z.B.: 62. Liedtitel hat die Zeile mit den meisten Zeichen(Zeichenanzahl).
Wobei nur ein Fenster auftauchen braucht mit beiden Meldungen zusammengefasst.

Grüße
Fraenky
Bitte warten ..
Mitglied: bastla
29.09.2007 um 14:19 Uhr
Hallo Fraenky!

Leider war meine Aufgabenstellung noch nicht 100% beschrieben.
Nur interessehalber: Wieviel Prozent waren es bereits?

01.
sTextBlock = WScript.Arguments(0) 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set oTextBlock = fso.OpenTextFile(sTextBlock, 1) 
04.
iMaxZeilen = 0 
05.
sMaxZeilenText = "" 
06.
iMaxLen = 0 
07.
sMaxLenText = "" 
08.
iZeilenNr = 0 
09.
sAktText = "Vor erstem Block ..." 
10.
Do While Not oTextBlock.AtEndOfStream 
11.
	sZeile = oTextBlock.ReadLine 
12.
	If sZeile <> "" Then 'keine Leerzeile 
13.
		aZeile = Split(sZeile, " ") 'Zerlegung der Zeile - interessant ist nur der erste Bestandteil. 
14.
		If Right(aZeile(0), 1) = "." Then 'Endet erster Teil der Zeile auf "."? 
15.
			If Len(aZeile(0)) > 1 Then 'Befindet sich vor dem "." noch Text ... 
16.
				If IsNumeric(Left(aZeile(0), Len(aZeile(0) - 1))) Then '... und stellt dieser eine Zahl dar? 
17.
					'Beginn eines neuen Blocks gefunden 
18.
					If iZeilenNr > iMaxZeilen Then 'Für vorigen Block Zeilenanzahl überprüfen ... 
19.
						iMaxZeilen = iZeilenNr 
20.
						sMaxZeilenText = sAktText 
21.
					End If				 
22.
					sAktText = sZeile 'Titel des aktuellen Blocks zwischenspeichern (ev auch nur aZeile(0)) 
23.
					iZeilenNr = 0 'Zeilenzähler rücksetzen 
24.
				End If 
25.
			End If 
26.
		End If 
27.
	End If 
28.
 
29.
	iZeilenNr = iZeilenNr + 1 'Zeile auf jeden Fall zählen 
30.
 
31.
	If Len(sZeile) > iMaxLen Then 'Länge der aktuellen Zeile größer als bisheriges Maximum 
32.
		iMaxLen = Len(sZeile) 'Neues Maximum und ... 
33.
		sMaxLenText = sAktText ' ... Blocktitel speichern. 
34.
	End If 
35.
Loop 
36.
 
37.
'Letzten Block überprüfen ... 
38.
If iZeilenNr > iMaxZeilen Then 
39.
	iMaxZeilen = iZeilenNr 
40.
	sMaxZeilenText = sAktText 
41.
End If				 
42.
 
43.
MsgBox "Längster Block mit   " & CStr(iMaxZeilen) & "   Zeilen:" & vbCrLF & _ 
44.
	sMaxZeilenText & vbCrLF & vbCrLF & _ 
45.
	"Block mit längster Zeile (   " & CStr(iMaxLen) & "   Zeichen):" & vbCrLF & _ 
46.
	sMaxLenText
Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
29.09.2007 um 21:00 Uhr
Hallo bastla.

Hast ja recht. Für mich war die ganze Sache klar.
Eigentlich habe ich nur vergessen zu erwähnen, das die Textblöcke in Absätze unterteilt sind.

Aber leider habe ich hier noch eine Fehlermeldung:
Zeile 16:
If IsNumeric(Left(aZeile(0), Len(aZeile(0) - 1))) Then
Zeichen 5
Typen unverträglich aZeile(...)
Laufzeitfehler.

Sieht doch aber ganz logisch aus.
Der linke Teil des Splitings wird daraufhin überprüft, ob es eine Zahl ist.
Hier habe ich folgende Änderung vorgenommen:
sTextBlock = "C:\skript2\Max-Textgröße\Hinario.txt"

Grüße
Fraenky
Bitte warten ..
Mitglied: bastla
29.09.2007 um 21:54 Uhr
Hallo Fraenky!

Obwohl das Script nicht gänzlich ungetestet war, enthält die Zeile eine falsche Klammersetzung - so sollte es gehen:
01.
If IsNumeric(Left(aZeile(0), Len(aZeile(0)) - 1)) Then
Würdest Du bei Fehlern möglichst auch die auslösenden Daten, zB durch ein vorgeschaltetes
01.
WScript.Echo sZeile
und Aufruf des Scripts von der Kommandozeile mit
01.
cscript //nologo "C:\Script2\Max-Textgröße\Scriptname.vbs" "C:\skript2\Max-Textgröße\Hinario.txt"
posten - durch Verwendung von "cscript" ersparst Du Dir, MsgBoxes wegzuklicken ...

Den Parameter "C:\skript2\Max-Textgröße\Hinario.txt" habe ich nur der Ordnung halber angeschrieben - in Deiner Version des Scripts hast Du ja offensichtlich die erste Zeile geändert (wobei der Aufruf dennoch mit Parameterübergabe erfolgen kann - dieser wird im Script dann einfach nicht verwendet).

Grüße
bastla
Bitte warten ..
Mitglied: Fraenky
29.09.2007 um 23:32 Uhr
Hallo bastla.

Super, das Script erfüllt mal wieder alle Anforderungen, nur die Anzahl der Zeichen pro Zeile stimmt irgendwie nicht, aber der richtige Block wird auf jeden Fall angezeigt.
Allso alles easy.
Mir ist es eigentlich egal, ob ich ein wscript Fenster schließe oder die Konsole mit cscript. Klick ist Klick.
Und das vorgeschaltete Echo hätte doch in diesem Fall auch nichts gebracht, weil der Fehler mit der Klammer erst in der folgenden Zeile auftauchte, oder?

Danke und Grüße
Fraenky
Bitte warten ..
Mitglied: bastla
30.09.2007 um 05:46 Uhr
Hallo Fraenky!

... ob ich ein wscript Fenster schließe oder die Konsole mit cscript.
Bei einem Klick für das Konsolenfenster und je einem Klick für die MsgBox-Ausgabe der soeben eingelesenen Zeile in der Schleife (wofür das "WScript.Echo" eigentlich gedacht war) gibt es dann vielleicht doch einen gewissen Unterschied ...

... nichts gebracht, weil der Fehler mit der Klammer erst in der folgenden Zeile auftauchte, oder?
Damit hättest Du Recht, wenn der Fehler in jedem Fall (für jede eingelesene Zeile) entstünde, was allerdings nicht der Fall war (zumindest bei den von mir verwendeten Testdaten war kein Fehler gemeldet worden).

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Vbs Anzahl gleicher Zeilen ermitteln
Frage von goodbytesBatch & Shell1 Kommentar

Hallo, in einem Array hab ich zehn mittels Semikolon getrennte Strings als Datensätze, die Datensätze sind durch vbCrLf getrennt. ...

Microsoft Office

Excel: maximale Anzahl in Folge stehender Werte ermitteln

Frage von FlexxaMicrosoft Office1 Kommentar

Hallo zusammen, wie kann ich in Excel die maximale Anzahl gleicher Werte in Folge ermitteln und diesen Bereich per ...

Entwicklung

VBS Für Änderung Mehere Texte in einer Datei

gelöst Frage von Mac2345Entwicklung13 Kommentare

Hallo ich benötige etwas Hilfe beim schreibe von vbs. Ich habe eine Datei die ich in einem bestimmten Bereich ...

Entwicklung

Script soll geöffnete Datei ermitteln und xxx y offen als Text schreiben

Frage von JuweeeEntwicklung1 Kommentar

Moin, vielleicht hatte jemand mal ein ähnliches "Problem" oder kann sich eine Lösung vorstellen!? Auf einem freigegebenen Dropbox-Ordner liegen ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 57 MinutenBackup

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 2 TagenExchange Server7 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 3 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke40 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke10 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft10 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...

Windows Server
Freigaben per Default nur für Domänen-Benutzer
Frage von tierwoWindows Server8 Kommentare

Hallo gibt es eine Möglichkeit, einen Server 2016 so zu konfigurieren (z.B. per GPO), dass Freigaben die erstellt werden ...