Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

VBS - InStr im Loop klappt nicht

Frage Entwicklung VB for Applications

Mitglied: waldgnarf

waldgnarf (Level 1) - Jetzt verbinden

27.09.2008, aktualisiert 17:56 Uhr, 7028 Aufrufe, 8 Kommentare

Hallo, der Spript liest die erste Zeile einer Textdatei ein und soll prüfen ob sich in dieser Zeile das Zeichen "-" befindet.
Aber das ganze steht in einem Loop, und darum funktioniert es nich wie normal.

01.
Set FSO=CreateObject("Scripting.FileSystemObject") 
02.
Set DATEI=FSO.GetFile("BLN.txt") 
03.
 
04.
Do 
05.
ZEILE=DATEI.OpenAsTextStream(1).ReadLine 
06.
If InStr(ZEILE,"-")<>0 Then 
07.
MsgBox ZEILE 
08.
End If 
09.
 
10.
LOESCHEN=DATEI.OpenAsTextStream(1).ReadAll&vbCrLF:DATEI.OpenAsTextStream(2).Write Replace(Mid(LOESCHEN,InStr(LOESCHEN,vbCrLF)+2),Chr(34),"") 
11.
 
12.
Loop Until ZEILE=""
Ich habe es nochmal getestet und jetzt klappt es ohne Loop auch nichtmer. :/

Gruß waldgnarf
Mitglied: bastla
27.09.2008 um 12:45 Uhr
Hallo waldgnarf!

Wenn Du nur die erste Zeile benötigst, ist ja die Schleife ohnehin überflüssig, es genügt:
01.
ZEILE=DATEI.OpenAsTextStream(1).ReadLine
Abgesehen davon: Was genau willst Du eigentlich erreichen?

Derzeit werden (unabhängig vom Inhalt der Zeile 1) aus der angegebenen Datei die gesamte Zeile 1 sowie alle Anführungszeichen entfernt.

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
27.09.2008 um 13:08 Uhr
Hi bastla, ich wollte im Loop das die eingelesene Zeile falls sie ein "-" enhält als MsgBox ausgegeben und dann wie die anderen Zeilen die kein "-" enthalten gelöscht wird, dann zur nächsten Zeile ... .
Bitte warten ..
Mitglied: bastla
27.09.2008 um 13:15 Uhr
Hallo waldgnarf!

Verstehe ich es so richtig?
  • Es sollen alle Zeilen einzeln eingelesen werden.
  • Die erste Zeile soll, falls sie ein "-" enthält, als MsgBox ausgegeben werden, alle anderen Zeilen nicht.
  • Die erste Zeile soll auf jeden Fall gelöscht werden.
  • Alle weiteren Zeilen sollen, wenn sie kein "-" enthalten, ebenfalls gelöscht werden.

Was hattest Du mit den Anführungszeichen = Chr(34) vor?

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
27.09.2008 um 13:47 Uhr
Es soll immer nur die erste Zeile eingelesen und dann gelöscht werden, und wenn die eingelesene Zeile ein ein Bindestrich enthält (irgendwo in der Mitte) dann soll die als MsgBox ausgegeben werden.

Ich bin ja noch anfänger im VBS und hab etwas wenn man so will aufgeschnappt ;), habe noch nicht nachgesehn was genau Chr(34) bedeutet.

Gruß waldgnarf
Bitte warten ..
Mitglied: bastla
27.09.2008 um 14:14 Uhr
Hallo waldgnarf!

Dann sollte ja genügen:
01.
Set FSO=CreateObject("Scripting.FileSystemObject") 
02.
Set DATEI=FSO.GetFile("BLN.txt") 
03.
 
04.
ZEILE=DATEI.OpenAsTextStream(1).ReadLine 
05.
If InStr(ZEILE,"-")<>0 Then MsgBox ZEILE 
06.
 
07.
LOESCHEN=DATEI.OpenAsTextStream(1).ReadAll & vbCrLF 
08.
DATEI.OpenAsTextStream(2).Write Mid(LOESCHEN,InStr(LOESCHEN,vbCrLF)+2)
Ist es übrigens Absicht, dass am Ende der Datei eine zusätzliche Zeilenschaltung eingefügt wird?

Grüße
bastla
Bitte warten ..
Mitglied: waldgnarf
27.09.2008 um 14:46 Uhr
Es funktioniert leider nicht, die Strings sehen z.B. so aus:
ANACARDIACEAE – Sumachgewächse
Mangifera indica / Mango
CORYLACEAE – Haselnussgewächse
Corylus avellana / Gewöhnliche Haselnuss

aber es kommt keine MsgBox Ausgabe bei enthalten eines Bindestrich

Im Prinziep geht es mir ja nur um das Unterscheiden von Arten und Pflanzen.
Aber ich hab nix passendes finden können was mit Grossbuchstaben zu tun hat.

Gruß waldgnarf
Bitte warten ..
Mitglied: bastla
27.09.2008 um 15:59 Uhr
Hallo waldgnarf!

Das Zeichen in dem von Dir geposteten Beispieltext ist kein "-", sondern ein "–" .

Auch wenn die beiden Zeichen sich optisch eigentlich nicht so sehr unterscheiden, ist doch das erste ein Chr(45), aber das zweite ein Chr(150).

Entweder gibst Du es daher mit der Tastenkombination Alt + 0150 (am Ziffernblock) ein, oder Du kopierst dieses Zeichen einfach aus der Textdatei in Deinen Code.
Um übrigens zu überprüfen, ob ein Wort ausschließlich aus Großbuchstaben besteht, gibt es verschiedene Möglichkeiten - wenn es schon genügt, festzustellen, dass keine Kleinbuchstaben enthalten sind, könnte das so aussehen:
01.
Wort = Split(ZEILE) 
02.
If Wort(0) = UCase(Wort(0)) Then MsgBox "Das erste Wort der Zeile enthält keine Kleinbuchstaben."
Das erste Wort in diesem Beispiel ist übrigens der Teil der Zeile vor dem ersten Leerzeichen.

Grüße
bastla

P.S.: Manchmal erweist es sich dann doch als vorteilhaft, in der Problembeschreibung etwas konkreter zu sein ...
Bitte warten ..
Mitglied: waldgnarf
27.09.2008 um 17:56 Uhr
:D, ja das Stimmt das mach ich nächstes mal besser, vielen vielen Dank bastla und noch schönes Wochenende.

Grüße waldgnarf
Bitte warten ..
Ähnliche Inhalte
Entwicklung
gelöst Grafische Darstellung - Fortschrittsanzeige VBS Skript (7)

Frage von Komoran12 zum Thema Entwicklung ...

Outlook & Mail
Outlook 2013 manuelles Archivieren klappt nicht (10)

Frage von westberliner zum Thema Outlook & Mail ...

Batch & Shell
gelöst Vbs programm unabhängig vom Speicherort ausführen (2)

Frage von Markus2016 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (17)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...