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 Arraywert läßt sich nicht in Datei schreiben

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

21.10.2012, aktualisiert 20:04 Uhr, 3579 Aufrufe, 4 Kommentare

Hallo,

ich arbeite mit kommaseparierten Datendateien (CSV). Hin und wider kommt mir mal eine Datei mit über 200 Datensätzen unter, die weniger Datenfelder als üblich (hier 18) enthält. Das letzte Feld ist immer das Datum in der üblichen Schreibeweise (TT.MM.JJJJ). Manchmal fehlt dies auch (es sind also nur 17 Datenfelder) und mein Skript bricht mit dem Typunverträglichkeitsfehler ab.

So möchte ich also die Ausgabe in eine andere Datei in der Art manipulieren, daß bei einer Anzahl der Datenfelder kleiner als 18 (UBound) ein String in die Ausgabedatei geschrieben wird. Leider kommt immer wieder bei dem "kürzeren Datensatz" der obige Fehler. Was kann man tun ? CStr und CDate funktioneren nicht. Hier Teile des Codes:

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
 
03.
If fso.FileExists(EingabeDatei) Then 
04.
Set objEingabe = fso.OpenTextFile(EingabeDatei, 1) 
05.
Set objAusgabe = fso.CreateTextFile(Ausgabedatei, 2) 
06.
objEingabe.Skipline ' Die erste Zeile weglassen 
07.
 
08.
Do While not objEingabe.AtEndOfLine 
09.
Inhalt=objEingabe.ReadLine ' ReadAll 
10.
 
11.
arrFeld=Split(Inhalt, ";") ' in Arrays aufsplitten 
12.
 
13.
 .... 
14.
 
15.
' mit UBound prüfen ob 18 Datenfelder vorhanden 
16.
 
17.
Zahl=Ubound(arrFeld) ' Die höchste Zahl 
18.
 If Zahl=17 Then  
19.
  Datum=CDate(arrFeld(17)) ' <------------ Typen unverträglich 
20.
 else 
21.
  Datum=" Datum fehlt !" 
22.
 end if 
23.
 
24.
MsgBox Datum ' zur Kontrolle ! 
25.
 
26.
accNamen=arrFeld(10) & ";" & arrFeld(15) & ";" & arrFeld(11) & ";" & arrFeld(12) & ";" & Datum & ";1920x1080;D;" & UCase(arrFeld(16)) & ";" 
27.
 
28.
objAusgabe.WriteLine accNamen 
29.
 
30.
Loop 
31.
 
32.
objEingabe.Close 
33.
objAusgabe.Close 
34.
 
35.
Set objAusgabe = Nothing 
36.
Set objEingabe = Nothing 
37.
Set fso = Nothing 
38.
 
Eine andere Möglichkeit wäre wohl gewesen, über objEingabe.Readline zu prüfen ob das vierte Zeichen von rechts eine 2 ist. Aber das wäre auch gescheitert, denn das vorletzte Datenfeld kann manchmal auch Zahlen enthalten.

Freundliche Grüße

GH

Mitglied: bastla
21.10.2012 um 21:10 Uhr
Hallo Gurkenhobel!

Du könntest vorweg den Feldinhalt auf "Datumswert" prüfen:
If IsDate(arrFeld(17)) Then ...
- schließlich weist die Fehlermeldung darauf hin, dass eben doch nicht immer, wenn es ein 18. Feld im Datensatz gibt, auch ein Datum drin steht ...

Grüße
bastla
Bitte warten ..
Mitglied: Gurkenhobel
22.10.2012, aktualisiert um 15:00 Uhr
Hallo bastla,

Danke für Deine Hilfe:

Zitat von bastla:
- schließlich weist die Fehlermeldung darauf hin, dass eben doch nicht immer, wenn es ein 18. Feld im Datensatz gibt, auch ein Datum drin steht ...

die Abfrage von Dir übernimmt keine löscht ungültigen Datumsformate (z.B. 31.11.2011), d.h. das Feld in der neuen Datei blieb frei. Ich habe den Code im Block (Zeile 17 bis 22) etwas abgewandelt. Das ist nun meine endgültige Lösung:

01.
Zahl=Ubound(arrFeld) ' Die höchste Zahl 
02.
 If Zahl=17 Then 
03.
  if IsDate (arrFeld(17)) then 
04.
   Datum=CDate(arrFeld(17)) 
05.
  else 
06.
   Datum="ungültiges Datum" 
07.
  end if 
08.
 else 
09.
  Datum="fehlendes Datum" 
10.
 end if
Danke und Tschüs

GH

<edit> 15:00: kleine Korrektur</>
Bitte warten ..
Mitglied: bastla
22.10.2012, aktualisiert um 12:26 Uhr
Hallo Gurkenhobel!

Abgesehen davon, dass eine Abfrage nix löscht, war das ohnehin etwa so gemeint, wie Du es jetzt umgesetzt hast ...

Grüße
bastla
Bitte warten ..
Mitglied: Gurkenhobel
22.10.2012 um 15:07 Uhr
Hi bastla,
abschließend habe ich meine Falschaussage noch mal revidiert.
Ich wünsche Dir noch einen schönen Tag ;-]

GH
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Schreiben eines Strings mit Leerzeichen in eine Datei

gelöst Frage von c20082005Batch & Shell6 Kommentare

Hallo, nach langem Rum- und Ausprobieren möchte ich Euch um Hilfe bitten für folgendes Problem: Ich möchte mit einer ...

Batch & Shell

Batch Eingabe in Datei schreiben

gelöst Frage von MedicalAdBatch & Shell2 Kommentare

Hallo Leute, ich habe folgendes Problem, ich möchte ein Batch Programm was nacheinander > Computername, IP Adresse, Aufstellungsort und ...

JavaScript

Zeit und Datum in Datei schreiben

Frage von MarcysJavaScript2 Kommentare

Hallo, mit Node-Red habe ich den Temperatursensor DHT22 ans Laufen bekommen. Ich habe zwei Node-Funktionen erstellt, die mir die ...

Batch & Shell

Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben

gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 2 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 8 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 12 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...