🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.vbasic
3 messages
3 total messages Started by Marek Sat, 19 Dec 2009 01:44
Nie mały problem dla grafika
#104416
Author: Marek
Date: Sat, 19 Dec 2009 01:44
45 lines
2381 bytes
Witam
Mam nie mały problem. Pracując na programach graficznych często otrzymuję
pliki tekstowe. Pliki te zanim użyję do obróbki graficznej wcześniej po
kolei wiersz po wierszu ręcznie je odpowiednio ustawiam. Zajmuje mi ta
operacja mnóstwo czasu. Nie znam się zbytnio na programie VB tym bardziej
jeśli ktoś podpowiedziałby w jaki sposób winien być skonstruowany algorytm,
aby te pliki tekstowe tak ustawić, żeby od razu można ich używać w
programach graficznych, byłbym szczerze wdzięczny.


Pozdrawiam
Marek

Pliki tekstowe tak wyglądają przed moją ręczną obróbką (przykładowo)
 tv2
06:25
Twoja pamięć, moja miłość
- dokument, Francja 2006

07 07:25
Przygód kilka wróbla Ćwirka
(14) - serial, Polska 1986
07:35
Kropelka - przygody z wodą
(9) - serial, Hiszpania 2002

08 08:10
Barwy szczęścia
(183) - serial, Polska 2008
08:45
Pytanie na śniadanie

Tekst po przeczytaniu algorytmem powinien wyglądać tak:
tv2
06:25 Twoja pamięć, moja miłość  - dokument, Francja 2006

07:25 Przygód kilka wróbla Ćwirka (14) - serial, Polska 1986

07:35 Kropelka - przygody z wodą (9) - serial, Hiszpania 2002

08:10 Barwy szczęścia (183) - serial, Polska 2008

08:45 Pytanie na śniadanie

Gdyby ktoś mógł podać kod, który będzie czytał ten plik będę wdzięczny.
Re: Nie mały problem dla grafika
#104417
Author: Janusz Rychter
Date: Mon, 21 Dec 2009 14:24
136 lines
5920 bytes
Cala trudnosc to sprecyzowanie linijki tekstu ktory spowoduje zapis
nowego wiersza, w wypadku zalacznego przekladu bedzie to czas ktory
moze wystepowac w dwoch formatach:
    vPatern1 = "^\d{2} \d{2}:\d{2}"     '<--dwie cyfry spacja dwie
cyfry : dwie cyfry
albo
    vPatern2 = "^\d{2}:\d{2}"             '<--dwie cyfry : dwie cyfry

Program czytajac wiersz po wierszu ze zbioru wejciowego spradza czy
ustalony patern egzystuje w danym wierszu, jesli tak to poprzednio
utworzony wiersz jest zapisuwany do nowego zbiory i budowa nowego
wiersza jest rozpoczeta. Aby to dzialalo nalezy dodac referencje do (w
VB6 PROJECT | REFERENCES):
- Microsoft Scripting Runtime
- Microsoft VBScript Regular Expressions 5.5

Do formy dodaj Button in w Click event uruchaniaj pfFixFile:

Private Sub Command1_Click()
    Call pfFixFile("D:\tv2.txt")
End Sub

Private Function pfFixFile(vFileName As String) As String
    Dim oFSO As Scripting.FileSystemObject
    Dim oFile As Object
    Dim oTextStream As Scripting.TextStream
    Dim oRegExp As RegExp
    Dim vMatches As MatchCollection

    Dim vPatern1 As String
    Dim vPatern2 As String
    Dim vTextLine As String
    Dim vLineCounter As Long
    Dim vTempLine As String

    On Error GoTo errTrap
    Set oRegExp = New RegExp
    oRegExp.IgnoreCase = True
    oRegExp.Global = True
    vPatern1 = "^\d{2} \d{2}:\d{2}"
    vPatern2 = "^\d{2}:\d{2}"

    Set oFSO = New Scripting.FileSystemObject
    Set oTextStream = oFSO.OpenTextFile(vFileName, ForReading)

    Do While oTextStream.AtEndOfStream <> True
        vTextLine = oTextStream.ReadLine
        If vLineCounter = 0 Then
            Set oFile = oFSO.CreateTextFile(vFileName & ".txt", True)
            Call oFile.WriteLine(Trim(vTextLine))
        Else
            oRegExp.Pattern = vPatern1
            Set vMatches = oRegExp.Execute(vTextLine)
            If vMatches.Count > 0 And Len(Trim(vTextLine)) = 8 Then
                If Len(Trim(vTempLine)) > 0 Then Call oFile.WriteLine
(Trim(vTempLine & vbCrLf))
                vTempLine = ""

                vTempLine = vTempLine & Mid(Trim(vTextLine), 3) & " "
            Else
                oRegExp.Pattern = vPatern2
                Set vMatches = oRegExp.Execute(vTextLine)
                If vMatches.Count > 0 And Len(Trim(vTextLine)) = 5
Then
                    If Len(Trim(vTempLine)) > 0 Then Call
oFile.WriteLine(Trim(vTempLine & vbCrLf))
                    vTempLine = ""

                    vTempLine = vTempLine & Trim(vTextLine) & " "
                Else
                    vTempLine = vTempLine & Trim(vTextLine) & " "
                End If
            End If

        End If
        vLineCounter = vLineCounter + 1
    Loop
    If Len(Trim(vTempLine)) > 0 Then Call oFile.WriteLine(Trim
(vTempLine))

    pfFixFile = vFileName & ".txt"

errTrap:
    If Err.Number <> 0 Then
        Call MsgBox(Err.Number & " - " & Err.Description)
    End If
    Set oFSO = Nothing
    Set oTextStream = Nothing
    Set oFile = Nothing
End Function

On Dec 18, 8:44 pm, "Marek" <ec...@interia.pl> wrote:
> Witam
> Mam nie mały problem. Pracując na programach graficznych często otrzymuję
> pliki tekstowe. Pliki te zanim użyję do obróbki graficznej wcześniej po
> kolei wiersz po wierszu ręcznie je odpowiednio ustawiam. Zajmuje mi ta
> operacja mnóstwo czasu. Nie znam się zbytnio na programie VB tym bardziej
> jeśli ktoś podpowiedziałby w jaki sposób winien być skonstruowany algorytm,
> aby te pliki tekstowe tak ustawić, żeby od razu można ich używać w
> programach graficznych, byłbym szczerze wdzięczny.
>
> Pozdrawiam
> Marek
>
> Pliki tekstowe tak wyglądają przed moją ręczną obróbką (przykładowo)
>  tv2
> 06:25
> Twoja pamięć, moja miłość
> - dokument, Francja 2006
>
> 07 07:25
> Przygód kilka wróbla Ćwirka
> (14) - serial, Polska 1986
> 07:35
> Kropelka - przygody z wodą
> (9) - serial, Hiszpania 2002
>
> 08 08:10
> Barwy szczęścia
> (183) - serial, Polska 2008
> 08:45
> Pytanie na śniadanie
>
> Tekst po przeczytaniu algorytmem powinien wyglądać tak:
> tv2
> 06:25 Twoja pamięć, moja miłość  - dokument, Francja 2006
>
> 07:25 Przygód kilka wróbla Ćwirka (14) - serial, Polska 1986
>
> 07:35 Kropelka - przygody z wodą (9) - serial, Hiszpania 2002
>
> 08:10 Barwy szczęścia (183) - serial, Polska 2008
>
> 08:45 Pytanie na śniadanie
>
> Gdyby ktoś mógł podać kod, który będzie czytał ten plik będę wdzięczny.
Re: Nie mały problem dla grafika
#104418
Author: Marek
Date: Mon, 21 Dec 2009 19:23
145 lines
6139 bytes
Bardzo dziękuję za algorytm sprawdza się w stu procentach.
Mój nadgarstek od ciągłego klikania wreszcie będzie odciążony.
Jeszcze raz dziękuję.
Pozdrawiam, Wesołych Świąt i Szczęśliwego Nowego Roku.
Marek

Użytkownik "Janusz Rychter" <najyer@hotmail.com> napisał w wiadomości
news:56120087-1bdc-4224-9ba4-ab20b75b5b29@n13g2000vbe.googlegroups.com...
Cala trudnosc to sprecyzowanie linijki tekstu ktory spowoduje zapis
nowego wiersza, w wypadku zalacznego przekladu bedzie to czas ktory
moze wystepowac w dwoch formatach:
    vPatern1 = "^\d{2} \d{2}:\d{2}"     '<--dwie cyfry spacja dwie
cyfry : dwie cyfry
albo
    vPatern2 = "^\d{2}:\d{2}"             '<--dwie cyfry : dwie cyfry

Program czytajac wiersz po wierszu ze zbioru wejciowego spradza czy
ustalony patern egzystuje w danym wierszu, jesli tak to poprzednio
utworzony wiersz jest zapisuwany do nowego zbiory i budowa nowego
wiersza jest rozpoczeta. Aby to dzialalo nalezy dodac referencje do (w
VB6 PROJECT | REFERENCES):
- Microsoft Scripting Runtime
- Microsoft VBScript Regular Expressions 5.5

Do formy dodaj Button in w Click event uruchaniaj pfFixFile:

Private Sub Command1_Click()
    Call pfFixFile("D:\tv2.txt")
End Sub

Private Function pfFixFile(vFileName As String) As String
    Dim oFSO As Scripting.FileSystemObject
    Dim oFile As Object
    Dim oTextStream As Scripting.TextStream
    Dim oRegExp As RegExp
    Dim vMatches As MatchCollection

    Dim vPatern1 As String
    Dim vPatern2 As String
    Dim vTextLine As String
    Dim vLineCounter As Long
    Dim vTempLine As String

    On Error GoTo errTrap
    Set oRegExp = New RegExp
    oRegExp.IgnoreCase = True
    oRegExp.Global = True
    vPatern1 = "^\d{2} \d{2}:\d{2}"
    vPatern2 = "^\d{2}:\d{2}"

    Set oFSO = New Scripting.FileSystemObject
    Set oTextStream = oFSO.OpenTextFile(vFileName, ForReading)

    Do While oTextStream.AtEndOfStream <> True
        vTextLine = oTextStream.ReadLine
        If vLineCounter = 0 Then
            Set oFile = oFSO.CreateTextFile(vFileName & ".txt", True)
            Call oFile.WriteLine(Trim(vTextLine))
        Else
            oRegExp.Pattern = vPatern1
            Set vMatches = oRegExp.Execute(vTextLine)
            If vMatches.Count > 0 And Len(Trim(vTextLine)) = 8 Then
                If Len(Trim(vTempLine)) > 0 Then Call oFile.WriteLine
(Trim(vTempLine & vbCrLf))
                vTempLine = ""

                vTempLine = vTempLine & Mid(Trim(vTextLine), 3) & " "
            Else
                oRegExp.Pattern = vPatern2
                Set vMatches = oRegExp.Execute(vTextLine)
                If vMatches.Count > 0 And Len(Trim(vTextLine)) = 5
Then
                    If Len(Trim(vTempLine)) > 0 Then Call
oFile.WriteLine(Trim(vTempLine & vbCrLf))
                    vTempLine = ""

                    vTempLine = vTempLine & Trim(vTextLine) & " "
                Else
                    vTempLine = vTempLine & Trim(vTextLine) & " "
                End If
            End If

        End If
        vLineCounter = vLineCounter + 1
    Loop
    If Len(Trim(vTempLine)) > 0 Then Call oFile.WriteLine(Trim
(vTempLine))

    pfFixFile = vFileName & ".txt"

errTrap:
    If Err.Number <> 0 Then
        Call MsgBox(Err.Number & " - " & Err.Description)
    End If
    Set oFSO = Nothing
    Set oTextStream = Nothing
    Set oFile = Nothing
End Function

On Dec 18, 8:44 pm, "Marek" <ec...@interia.pl> wrote:
> Witam
> Mam nie mały problem. Pracując na programach graficznych często otrzymuję
> pliki tekstowe. Pliki te zanim użyję do obróbki graficznej wcześniej po
> kolei wiersz po wierszu ręcznie je odpowiednio ustawiam. Zajmuje mi ta
> operacja mnóstwo czasu. Nie znam się zbytnio na programie VB tym bardziej
> jeśli ktoś podpowiedziałby w jaki sposób winien być skonstruowany
algorytm,
> aby te pliki tekstowe tak ustawić, żeby od razu można ich używać w
> programach graficznych, byłbym szczerze wdzięczny.
>
> Pozdrawiam
> Marek
>
> Pliki tekstowe tak wyglądają przed moją ręczną obróbką (przykładowo)
> tv2
> 06:25
> Twoja pamięć, moja miłość
> - dokument, Francja 2006
>
> 07 07:25
> Przygód kilka wróbla Ćwirka
> (14) - serial, Polska 1986
> 07:35
> Kropelka - przygody z wodą
> (9) - serial, Hiszpania 2002
>
> 08 08:10
> Barwy szczęścia
> (183) - serial, Polska 2008
> 08:45
> Pytanie na śniadanie
>
> Tekst po przeczytaniu algorytmem powinien wyglądać tak:
> tv2
> 06:25 Twoja pamięć, moja miłość - dokument, Francja 2006
>
> 07:25 Przygód kilka wróbla Ćwirka (14) - serial, Polska 1986
>
> 07:35 Kropelka - przygody z wodą (9) - serial, Hiszpania 2002
>
> 08:10 Barwy szczęścia (183) - serial, Polska 2008
>
> 08:45 Pytanie na śniadanie
>
> Gdyby ktoś mógł podać kod, który będzie czytał ten plik będę wdzięczny.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads