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, 6993 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen

Frage von joni2000de zum Thema Batch & Shell ...

Windows 10
Klappt es noch mit 7 Key Windows 10 zu aktivieren? (7)

Frage von zeroblue2005 zum Thema Windows 10 ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

LAN, WAN, Wireless
gelöst Router Switch zwei APs Verbindung klappt nicht (16)

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

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...