Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: (VB) Merkki joka rivin alkuun ja loppuun

Sivun loppuun

Minä [27.02.2004 21:53:20]

#

miten saan VB6:lla ohjelman lataamaan tiedoston niin että se lisää joka ikisen rivin alkuun ja loppuun "-merkin ja lopuksi tallentaa sen?

lisäksi joka kymmenennen rivin jälkeen pitäisi pystyä jättämään tyhjä rivi.

Miten tuon saisi tehtyä? Itse en keksinyt muuta mahdollisuutta kun ladata se listboxiin tms ja sieltä sitten rivi kerrallaan takaisin tiedostoon mutta tässä tuli toteutus ongelmia.. Sitäpaitsi (ainakin se miten koetin) oli tosi rasittava ja vaikea selkoinen tyyli..

miten sen saa tehtyä suoraan?

remontti-reiska [27.02.2004 22:04:21]

#

https://www.ohjelmointiputka.net/koodivinkit/24153-vb6-tietyn-rivin-haku-tiedostosta
Avaa jokainen rivi noin omaan muuttujaansa, tee jokaiselle riville kaksi muuttujaa. 1muuttuja on se teksti ja toinen muuttuja on: " 1muuttuja " ja sitten lisäilet niiden 2muuttujien arvot tiedostoon. Kuulostiko liian vaikealta? Minulla on tapana tehdä tämmöisiä outoja toteutuksia :D.

Minä [27.02.2004 22:12:01]

#

siis niinku? :)

remontti-reiska [27.02.2004 22:40:12]

#

Eli kaksi muuttujaa joka riville: Toinen niistä on alkuperäinen rivi ja toinen on se rivi mutta merkit lisättynä.

hunajavohveli [28.02.2004 14:13:48]

#

Ai siis miten saat "-merkin muuttujan alkuun ja loppuun? No, koska VB ei anna kirjoittaa "-merkkejä vaan luulee niitä ainostaan merkkijonon alku- ja loppupisteiksi, on käytettävä "-merkin ASCII-koodia, joka on 34.


teksti = CHR$(34) + teksti + CHR$(34)

Tuo CHR$(34) vastaa "-merkkiä.

Jos haluat tyhjän rivin joka kymmenennen jälkeen, kannattaa käyttää MOD-käskyä. Joka kerta kun tallennetaan rivi, lisätään johonkin muuttujaan yksi. Sitten tarkistetaan, että jos muuttuja MOD 10 = 0, eli jos muuttuja on jaollinen kymmenellä, silloin tallennetaan tyhjä rivi.

Antti [28.02.2004 14:44:09]

#

Päästän Minän pälkähästä. Tässä:

Muista laittaa referenssi Microsoft Scripting luokkaan, jotta saat FileSystemObjektin käyttöön.

Siis: Project->References->Microsoft Scripting, rasti ruutuun->Ok

Function ReadWriteFileForMeFromOhjelmointiPutka(strFile As String)
    Dim fsoFile As New FileSystemObject
    Dim tsStream As TextStream
    Dim strInput As String
    Dim iCnt As Integer

    iCnt = 0
    If fsoFile.FileExists(strFile) Then
        Set tsStream = fsoFile.OpenTextFile(strFile, , False)
        Do While Not tsStream.AtEndOfStream
            iCnt = iCnt + 1
            strInput = strInput & Chr(34) & tsStream.ReadLine & Chr(34) & vbCrLf
            If iCnt = 10 Then
                strInput = strInput & vbCrLf
                iCnt = 0
            End If
        Loop
        tsStream.Close
        Set tsStream = fsoFile.OpenTextFile(strFile, ForWriting, False)
            tsStream.Write strInput
        tsStream.Close
    End If

Minä [01.03.2004 20:40:49]

#

Miten tuo toimii?
En löytänyt kuin Microsoft Scripting Runtimen.. onko sama asia?

Antti [01.03.2004 21:18:47]

#

On, se on sama asia...

Minä [02.03.2004 10:21:04]

#

Niin minä vähän arvelinkin.. Mutta miten koodi toimii?
Ei ole oikein kommentointia..

Antti [03.03.2004 00:24:47]

#

Joo...

Siis kopsaa koodi projektiisi (ja lisää loppuun se kopioinnista missaantunut puuttuva End Function)...

Kutsu sitä suoraan function nimellä seuraavasti:

ReadWriteFileForMeFromOhjelmointiPutka("C:\Ihan_iku_oma_tiedostoni,txt")

Oheinen koodi lisää jokainse rivin loppuun ja alkuun lainausmerkit ja lisäksi kymmenen rivin välein rivin vaihdon. Eikö se ollut mitä halusit?

Minä [03.03.2004 12:03:22]

#

Jees. Homma toimii kuin unelma!
Kiitos!

remontti-reiska [03.03.2004 12:34:48]

#

Jooh. Eiköhän sen noinkin pysty tehdä ja onhan kaikilla omat systeeminsä millä tekee :).

Minä [03.03.2004 13:18:41]

#

Ööp.. Eipä toimikaan..

Run-time error '479':
ActiveX component cant create object

ja viittaa riville:

If fsoFile.FileExists(strFile) Then

Antti [03.03.2004 15:34:35]

#

Sulla ei ole edelleenkään referenssiä siihen Microsoft Scripting Runtime komponenttiin!!!!

Project->References->Microsoft Scripting Runtime, rasti ruutuun->Ok

Minä [03.03.2004 15:47:15]

#

Ka on..

Microsoft Scripting Runtimessa on rasti..
c:\windows\system\scrrun.dll

Mikäköhä on pielessä..

Antti [03.03.2004 16:05:21]

#

Mihin projektissa kopioit sen koodin? Mikä versio Visual Basicista sinulla on? Itse sain sen ainakin toimimaan oikein.

Oletko laittamassa sitä webbisivulle?

Mikä käyttis sinulla on?

Minä [03.03.2004 16:20:29]

#

Kokeilin formin koodin sekaan ja sitte erilliseen moduuliin vaan ei toimi.. mihin se pitäis laitta?

Enterprise Edition ja win98
En ole laittamassa.

Et sais käännettyä valmista exe tiedostoa ja pistettyä mailiin?
emailosoite@jippii.fi

Antti [03.03.2004 17:27:34]

#

Käännetty versio tekee luultavasti saman kuin kääntämätönkin... venaas väännän sulle 98-yhteensopivan funktion.

Antti [04.03.2004 12:26:14]

#

Bugaili tämä putka illalla - en saanut lähetettyä tätä koodia:

Tässä on nyt samanlainen metodi ilman referenssejä...

Function ReadWriteFileForMeFromOhjelmointiPutka(strFile As String)
    Dim strLine As String
    Dim strInput As String
    Dim iCnt As Integer
    iCnt = 0
    Open strPath For Input As #1
    If Err = 53 Then Exit Function
    Do While Not EOF(1)
        iCnt = iCnt + 1
        Line Input #1, strLine
        strInput = strInput & Chr(34) & strLine & Chr(34) & vbCrLf

        If iCnt Mod 10 = 0 Then
            strInput = strInput & vbCrLf
        End If
    Loop
    Close 1
    Open strPath For Output As #1
    Print #1, strInput
    Close 1
End Function

Minä [04.03.2004 15:24:37]

#

No niin! Homma toimii ja "-merkit tulee todella näppärästi!
Suur kiitos!

ekan rivin strFile pitää vaihtaa strPath muuten ei toimi;)

Antti [04.03.2004 17:33:03]

#

Joo...oikeassa olet.

Tein nääs sen toisessa metodi rungossa ja koppasin tuohon samaan, että sain tuon hyvän metodin nimen säilytettyä ;) Unohtui sitten vaihtaa tuo parametrin nimi...


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta