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

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, 7042 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
VB for Applications
VBA - VBS : Umbennen und Verschieben von Dateien in Loop
gelöst Frage von E.WindVB for Applications4 Kommentare

Hallo zusammen, folgende Situation habe ich: Warenwirtschaftssystem erzeugt eine sog. Pollingdatei für DHL Easylog, bisher war es so, das ...

Batch & Shell
Batch: Loop zum kopieren von Dateien
gelöst Frage von BiffBaffBatch & Shell1 Kommentar

Hallo zusammen, leider bin ich nicht sehr vertraut mit dem erstellen von Batch dateien daher mag die Frage vielleicht ...

Netzwerkgrundlagen
Loop am Switch ohne Broadcaststurm
gelöst Frage von berndgrschNetzwerkgrundlagen9 Kommentare

Hallo, ich bin ganz neu hier und leider nicht richtig fit was Netzwerkkonfiguration angeht. Ich möchte EMV-Tests an einem ...

Switche und Hubs
CPU durch L2-Loop defekt
Frage von tvprog1Switche und Hubs4 Kommentare

Hallo, kann die CPU (und evt. noch andere Bauteile) von einem Switch durch einen L2-Loop kaputt gehen? Gruß

Neue Wissensbeiträge
DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 2 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 6 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...