charmeur
Goto Top

Leere Zeile

Hallo ihr
ich habe noch mal eine frage, und zwar im folgenden code wird eine txt datei ausgelesen und in einer msgbox widergegeben
doch leider erscheint die msgbox auch wenn nichts in der zeile steht wie kann ich das unterbinden?
und noch eine glizekleine frage
wie bekomme ich es hin, das ich eine msgbox mit zwei button (ja/nein) habe, die jenachdem was gdrückt wird verschiedene ausführungen tätigen


Option Explicit
on error resume next
Dim oXL
Dim arrLines
Dim WshShell
Dim iReturn
Dim sMessage, sTitel, sTitel1

arrLines = DownloadArray("http://tspo...../media/hs/hh/1.txt")  

If VarType(arrLines) <> vbEmpty Then

 'Fenstertitel erstes fenster  
  sTitel = arrLines(2)
  sTitel1 = arrLines(4)

If not arrLines(3) = "" Then  
    sMessage = "Hallo " & arrLines(0) & "INFOS!!!" & vbNewLine & vbNewLine & "bezahlt bis --> " & arrLines(1) & "         Stand --> " & arrLines(7) & vbNewLine & "  dabei seit --> " & arrLines(9) & vbNewLine & arrLines(10)  
    Set WshShell = CreateObject("WScript.Shell")  
    iReturn = WshShell.Popup(sMessage, arrLines(8), sTitel, vbInformation)
  End If

  Select Case iReturn
    Case -1
      sMessage = arrLines(0)
  End select
  

  If not arrLines(5) = "" Then  
  iReturn = WshShell.Popup(arrLines(5), 0, sTitel1, vbInformation)
  End If


  
If not arrLines(6) = "6 -" Then  
  WshShell.Run arrLines(6)
  End If

End If
Public Function DownloadArray(ByVal URL) 'As String  
  Dim WebReq 'As MsXml2.XmlHttp  
  Dim FSO 'As Scripting.FileSystemObject  
  Set WebReq = CreateObject("WinHttp.WinHttpRequest.5.1")  
  Set FSO = CreateObject("Scripting.FileSystemObject")  
  WebReq.Open "get", URL, False  
  WebReq.Send
  DownloadArray = Split(WebReq.ResponseText, vbLf)
End Function

Content-Key: 171049

Url: https://administrator.de/contentid/171049

Printed on: April 20, 2024 at 02:04 o'clock

Member: Centauri
Centauri Aug 07, 2011 at 07:56:26 (UTC)
Goto Top
Hallo Charmeur,

Ich vermute, dass deine Zeilen nicht ganz leer sind. versuche mal mit Trim eventuelle Leerzeichen zu entfernen.

Für Meldefenster nehme ich immer Msgbox("Test","Titel",vbyesno)

Du kannst das Ergebnis gegen vbyes oder vbno prüfen.

Tschüss

Centauri
Mitglied: 76109
76109 Aug 07, 2011 at 08:09:12 (UTC)
Goto Top
Hallo charmeur!

Ist das ein VBS- oder VBA-Code?

Beispiel für Ja/Nein/Nothing:
Set WshShell = CreateObject("WScript.Shell")  
    
Select Case WshShell.PopUp("Message", 3, "Titel", vbInformation Or vbYesNo)  
    Case vbNo
        'Nein  
    Case vbYes
        'Ja  
    Case Else
        'Zeit abgelaufen  
End Select

Und anstelle von
If VarType(arrLines) <> vbEmpty Then
kannst Du auch
If IsArray(arrLines) Then
schreiben

Gruß Dieter
Member: charmeur
charmeur Aug 07, 2011 at 13:35:08 (UTC)
Goto Top
Zitat von @76109:
Hallo charmeur!

Ist das ein VBS- oder VBA-Code?

Beispiel für Ja/Nein/Nothing:
> Set WshShell = CreateObject("WScript.Shell")  
>     
> Select Case WshShell.PopUp("Message", 3, "Titel", vbInformation Or vbYesNo)  
>     Case vbNo
>         'Nein  
>     Case vbYes
>         'Ja  
>     Case Else
>         'Zeit abgelaufen  
> End Select
> 

Und anstelle von
If VarType(arrLines) <> vbEmpty Then
kannst Du auch
If IsArray(arrLines) Then
schreiben

Gruß Dieter


Hallo Dieter
das sollte ein VBS code sein, aber so 100%ig ist der sicher nicht, da ich mich eigentlich nicht wirklich mit vbs auskenne
sind sicher auch vba komponenten drinne
Member: charmeur
charmeur Aug 07, 2011 at 14:46:59 (UTC)
Goto Top
Zitat von @Centauri:
Hallo Charmeur,

Ich vermute, dass deine Zeilen nicht ganz leer sind. versuche mal mit Trim eventuelle Leerzeichen zu entfernen.

Für Meldefenster nehme ich immer Msgbox("Test","Titel",vbyesno)

Du kannst das Ergebnis gegen vbyes oder vbno prüfen.

Tschüss

Centauri


Hallo Centauri
also die linie in der TXT sind leer trotzdem kommt dann das msgbox und ist eben leer
Member: rubberman
rubberman Aug 07, 2011 at 15:38:18 (UTC)
Goto Top
Hallo charmeur.

In der Funktion "DownloadArray" wird ein Array erzeugt, in dem der Inhalt der Datei an Zeilenumbrüchen aufgesplittet wird.
Sollte in deiner Textdatei ein Zeilenumbruch vorhanden sein, dann ist die Datei schon nicht mehr leer und das Array wird angelegt. Das Array hat dann ein Element mit einer leeren Zeichenfolge. Die Abfrage
If VarType(arrLines) <> vbEmpty Then
kanns du dann genauso vergessen, wie die von Dieter vorgeschlagene Version
If IsArray(arrLines) Then
Diese Zeile prüft letztlich nur, ob die Funktion was geliefert hat.

Du kannst also nur zusätzlich prüfen, ob das erste Element eine leere Zeichenfolge enthält, á la
If arrLines(0) = "" Then
und mit dieser Bedingung den weiteren Ablauf abbrechen.

Grüße
rubberman
Member: charmeur
charmeur Aug 07, 2011 at 16:28:35 (UTC)
Goto Top
Zitat von @rubberman:
Hallo charmeur.

In der Funktion "DownloadArray" wird ein Array erzeugt, in dem der Inhalt der Datei an Zeilenumbrüchen
aufgesplittet wird.
Sollte in deiner Textdatei ein Zeilenumbruch vorhanden sein, dann ist die Datei schon nicht mehr leer und das Array wird angelegt.
Das Array hat dann ein Element mit einer leeren Zeichenfolge. Die Abfrage
If VarType(arrLines) <> vbEmpty Then
kanns du dann genauso vergessen, wie die von Dieter vorgeschlagene Version
If IsArray(arrLines) Then
Diese Zeile prüft letztlich nur, ob die Funktion was geliefert hat.

Du kannst also nur zusätzlich prüfen, ob das erste Element eine leere Zeichenfolge enthält, á la
If arrLines(0) = "" Then
und mit dieser Bedingung den weiteren Ablauf abbrechen.

Grüße
rubberman

Hallo rubberman
also irgend wie funktioniert das nicht bei mir
in meiner txt datei ist in der zeile 5 nichts drinne dann müsste doch mit der option
If arrLines(0) = "" Then  
end if
der befehl übersprungen werden oder?

also der hindergrund ist dieser das wenn in der txt datei die zeile 5 leer ist soll die msgbox gar nicht erst aufgemacht werden dies wollte ich eben mit der oberen option machen

If arrLines(5) = "" Then  

'zweitest Fenster  
iReturn = WshShell.Popup(arrLines(5), arrLines(8), arrLines(4), vbInformation)
End If
Member: bastla
bastla Aug 07, 2011 at 16:38:53 (UTC)
Goto Top
Hallo charmeur!

Die Zeile 5 steht in "arrLines(4)" ...

Grüße
bastla
Member: rubberman
rubberman Aug 07, 2011 at 16:51:44 (UTC)
Goto Top
Hallo bastla,

so ist es.
Ein Unsicherheitsfaktor bleibt aber noch (hatte ich ganz vergessen zu erwähnen). Ich habe mit ein paar Dateien getestet, die mir Google ausgespuckt hat, weil mir hier kein anderes Netzwerk zur Verfügung steht. Bei allen Tests kamen die Zeilenumbrüche nur als Line Feed. Aus dem Grund habe ich vbLf als Separator verwendet. Nun könnte aber unter Umständen ein Carriage Return im Array stehen.

@charmeur

Teste mal, ob sich mit ...
  DownloadArray = Split(WebReq.ResponseText, vbCrLf)
... in der Funktion noch irgendwas tut.

Grüße
rubberman
Member: charmeur
charmeur Aug 07, 2011 at 16:52:30 (UTC)
Goto Top
Zitat von @bastla:
Hallo charmeur!

Die Zeile 5 steht in "arrLines(4)" ...

Grüße
bastla

ok überredet aber das ergebnis ist das gleiche
Member: bastla
bastla Aug 07, 2011 at 17:46:53 (UTC)
Goto Top
Hallo charmeur!

Dann lade die Datei mit dem folgenden Script einmal herunter und speichere sie damit lokal:
URL = "http://tspo...../media/hs/hh/1.txt"  
Set WebReq = CreateObject("WinHttp.WinHttpRequest.5.1")  
Set FSO = CreateObject("Scripting.FileSystemObject")  
WebReq.Open "get", URL, False  
WebReq.Send
fso.CreateTextFile("D:\1.txt").Write WebReq.ResponseText  
- dann kannst Du sie mit einem Hex-Editor genauer untersuchen (auch hinsichtlich der Zeilenschaltungen) ...

Grüße
bastla
Member: charmeur
charmeur Aug 07, 2011 at 23:03:11 (UTC)
Goto Top
ok hat funktioniert danke an alle