German Inhalt einer Text-Datei anzeigen

Discussion in 'German Forum' started by peternmb, Feb 27, 2015.

  1. peternmb

    peternmb Active Member Licensed User

    Hallo,

    ich möchte mir den Inhalt einer Text-Datei in einem Extra-Fenster anzeigen lassen, falls der Platz nicht reicht will ich darin scrollen können. Ich habe dazu ein Label auf einem ScrollView in einem UserDialog-Fenster geöffnet - es wird aber nur die erste Zeile angezeigt. Ich hatte gehofft, dass es an der Nicht-UTF8-Kodierung der Datei liegt - aber auch das manuelle Konvertieren in das UFT8-Format hilft nicht.
    Hier ist mein Code, vielleicht kann mir jemand einen Tipp geben:
    Code:
    Sub btnTXT_Click
       
    'Inhalts-Datei anzeigen
       Dim cd As CustomDialog
        
    Dim pnl As Panel
        pnl.Initialize(
    "pnl")
        
    Dim bgnd As ColorDrawable
        bgnd.Initialize(
    Colors.RGB(250250210), 5dip)
        pnl.Background = bgnd
        

       scvText.Initialize(100)                          
       pnl.AddView(scvText, 
    0095%x,60%y)     
        
    '
        lblText.Initialize("")                              
       scvText.Panel.AddView(lblText, 
    00 ,100%x100%y)
       lblText.Color = Farbe1                              
       lblText.TextColor = Farbe2                       
       
    '
        txt = File.ReadString(AppDir & "/Daten",txtDatei) 
        lblText.Text = txt
       scvText.Panel.Height = 
    50%y
       lblText.Height = Tsize2
       
    '
       scvText.ScrollPosition = 0             ' set the scroll position to the top of the text
       DoEvents                               ' needed to execute the previous line
       '
       cd.AddView(pnl, 0095%x,60%y)
        
    Dim ret As String
        ret = cd.Show(lbl02.Text,
    "schliessen","",""Null)
       
    '
    End Sub
    Es würde mich auch interessieren, wie ich Windows-Dateien direkt beim Einlesen in das Label nach UTF8 konvertieren kann. Vielen Dank.
     
  2. peternmb

    peternmb Active Member Licensed User

    ich habe hier im Forum in einem Beispiel eine gute Lösung gefunden:
    ich lasse den Text statt in einem CustomDialog auf einem abgedunkelten Hintergrund in einem Webview anzeigen:
    Code:
    Sub btnTXT_Click  'Inhalts-Datei anzeigen
      '
      PnlBlack.Initialize("PnlBlack")
      
    Dim bgnd As ColorDrawable
      bgnd.Initialize( 
    Colors.ARGB(155,0,0,0),0)
      PnlBlack.Background = bgnd
      
    Activity.AddView(PnlBlack, 00100%x100%y)   
      
    '  
      WebView1.Initialize("WebView1")
      PnlBlack.AddView(WebView1,
    2%x,15%y,96%x,85%y)
      
    '
      TextReader1.Initialize2(File.OpenInput(AppDir & "/Daten",txtDatei) ,"ISO-8859-1")         
      txt = TextReader1.ReadAll   
      TextReader1.Close
      WebView1.LoadHtml(txt)
      
    '
    End Sub
    Leider werden die LF in der Datei nicht berücksichtigt, ich habe es mit ISO-8859-1, ISO-8859-15 und auch mit Windows-1252 versucht. In einem Editor auf meinem Tablet werden die Dateien korrekt angezeigt.
     
    Last edited: Feb 28, 2015
  3. klaus

    klaus Expert Licensed User

    Hast Du dir mal dieses Beispiel angeschaut ?
     
  4. peternmb

    peternmb Active Member Licensed User

    Hallo Klaus,
    ein Superbeispiel, sogar mit Auswahl für Schrftart und Textgröße :)

    Nur, nachdem ich es angepasst und in meinen Code eingebaut habe funktioniert es leider nur mit deinem Beispieltext :(
    Meine Textdateien kommen vom Windows-Rechner und sind nicht UTF-8 codiert sonder vermutlich ISO-8859-15 oder Windows.

    Kann ich diese Dateien vielleicht vor dem Einlesen mit File.GetText irgendwie konvertieren?
     
  5. klaus

    klaus Expert Licensed User

    Versuche diesen Code:
    Code:
    Dim tr As TextReader
    tr.Initialize2(
    File.OpenInput(AppDir & "/Daten",txtDatei), "Windows-1252")
    txt = tr.ReadAll
    tr.Close
     
  6. eurojam

    eurojam Well-Known Member Licensed User

    Hallo Peter,
    man kann die textdatei auch als stream einlesen und die Codierung mitgeben, also ungefähr so:
    Code:
    Dim input As InputStream
       
    Dim mytext As String
       input = 
    File.OpenInput(File.DirAssets, "test.txt")
       
    Dim TxtReader As TextReader
       TxtReader.Initialize2( input, 
    "ISO-8859-1")
       mytext = TxtReader.ReadAll
       input.Close
    mytext sollte dann auf jeden Fall einen korrekten string enthalten...
     
  7. peternmb

    peternmb Active Member Licensed User

    um Fehler in meinem Code auszuschließen habe ich versucht, meine Datei in deinem Beispiel korrekt anzuzeigen.
    Es werden zwar LF und Umlaute richtig angezeigt, aber der Inhalt des Labels läßt sich nicht scrollen.
    Ich hänge mal eine Beispiel-Textdatei an, vielleicht hast du noch eine Idee.
     

    Attached Files:

    Last edited: Mar 1, 2015
  8. peternmb

    peternmb Active Member Licensed User

    Leider das gleiche Ergebniss, der Text wird korrekt angezeigt läßt sich aber nicht scrollen.
     
  9. klaus

    klaus Expert Licensed User

    Ich habe es versucht.
    Es scheint dass MeasureMultilineTextHeight die Höhe des Textes etwas kurz rechnet wenn kein CRLF am Ende ist.
    Ich habe an deinen Text ein CRLF am Ende angehänt und der Text wird richtig angezeigt.
    Für kleine TextSize Werte scrollt der Text nicht weil nicht lang genug ist.
     

    Attached Files:

  10. klaus

    klaus Expert Licensed User

    Dein Code ist der gleiche wie meiner in Post #5 nur etwas länger.

    Der einzige Unterschied ist "Windows-1252" anstatt "ISO-8859-1".
     
  11. peternmb

    peternmb Active Member Licensed User

    Ja, habe ich eben auch gemerkt :rolleyes:, wenn ich die Textsize größer mache, dass der Text nicht mehr ins Label passt funktioniert es.
    Kann ich das CRLF irgendwie automatisch dranhängen? Ich versuche die Größe der Textanzeige zu ändern, bringe das aber nicht hin.
     
  12. klaus

    klaus Expert Licensed User

    Code:
    If txt.CharAt(txt.Length - 1) <> Chr(10Then
        txt = txt & 
    CRLF
    End If
    Was meinst Du hier?
     
  13. eurojam

    eurojam Well-Known Member Licensed User

    Hallo Klaus,
    habe ich bemerkt und mir gemerkt....:)

    Danke & Grüße
    Stefan
     
  14. peternmb

    peternmb Active Member Licensed User

    ich wollte das Label so vergrößern, dass der komplette Text zu sehen ist, aber mit dem angehängten CRLF erübrigt sich das.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice