Avatar billede snowman71 Nybegynder
11. april 2006 - 15:38 Der er 10 kommentarer

Søg og erstat kode

Hvordan laves et script som:
1) Åbner en tekstfil
2) erstatter xxx med ingenting
2) lukker filen
Avatar billede leol Nybegynder
11. april 2006 - 18:05 #1
xxx er?
Avatar billede snowman71 Nybegynder
11. april 2006 - 20:18 #2
xxx er bare et udtryk for det man nu vil erstatte.. ;o)
Avatar billede rynke10 Novice
12. april 2006 - 07:07 #3
smid 2 text bokse og en commandbutton på din form.
Den første textbox er stien til den fil du vil have erstattet, den anden er til det du vil erstatte. F.ex. 1234 bliver erstattet med ingenting.

Private Sub Command1_Click()

Dim minstring As String

  Open Text1.Text For Input As #1
  Open "c:\temp.txt" For Output As #2
 
Do While Not EOF(1)
    Line Input #1, minstring
    minstring = Replace(minstring, Text2.Text, "")
    Print #2, minstring
Loop

  Close #1
  Close #2
 
FileCopy "c:\temp.txt", Text1.Text

 
End Sub

Det kan laves på mange måder, du kan læse hele filen ind i et array, eller som her, skrive en midlertidig fil og fylde det hele der over i.
I linien  minstring = Replace(minstring, Text2.Text, "") kan du evt sætte en variabel ind istedet for "", hvis du vil have det erstattet med noget andet.
Avatar billede snowman71 Nybegynder
12. april 2006 - 09:10 #4
Tak for din kommentar.

Ideen er at sætte scriptet ind i et andet program, som skal afvikle koden. Dvs. der skal ikke laves noget interaktivt.

Skal jeg så bare skrive det der skal erstattes i stedet for ministring og ændre text1.text til eksempelvis c:\datafil.txt ? Hvad er Text2.Text ?
Avatar billede rynke10 Novice
12. april 2006 - 15:35 #5
minstring er bare en variabel hvor de enkelte linier i txt-filen bliver gemt.
text1.text er en tekstbox, den kan du erstatte med en anden variabel. Det er den der indeholder stien til den fil der skal erstattes i.
text2.text er den tekst der skal søges efter.
Du kan så bruge "c:\datafil.txt" istedet for text1.text. Husk "" omkring, når det ikke er en variabel.
Avatar billede snowman71 Nybegynder
12. april 2006 - 16:00 #6
Jeg skal indtaste koden i følgende:

Function OnJobStopped (  ) As Long


  '** TODO: Implement your handler here.
  '** The main application object is available in the Application variable.

  OnJobStopped = EV_OK  ' Return value to INVOICES
End Function

Skal jeg stadig have sub og endsub med?

Jeg prøvede følgende

Function OnJobStopped (  ) As Long

Sub test()

Dim minstring As String

  Open "c:\test1.txt" For Input As #1
  Open "c:\temp.txt" For Output As #2
 
Do While Not EOF(1)
    Line Input #1, minstring
    minstring = Replace(minstring, "testerstat", "")
    Print #2, minstring
Loop

  Close #1
  Close #2
 
FileCopy "c:\temp.txt", "c:\test1.txt"

 
End Sub
  OnJobStopped = EV_OK  ' Return value to INVOICES
End Function


og fik fejlen Kompileringfejl - fejlkode 80040009 - Syntak error on line 8 __Sub test()
Avatar billede rynke10 Novice
12. april 2006 - 16:10 #7
Ingen sub, den bliver jo ikke kaldt. Du har allerede sat det ind i en funktion.
Ellers burde det virke.
Avatar billede martin_moth Mester
13. april 2006 - 13:00 #8
du har en sub inden i en function - det er snavs
Avatar billede rynke10 Novice
13. april 2006 - 14:40 #9
martin -> Det var vist også ca det jeg mente, selv om jeg ikke fik det formuleret så klart. Det må være mangel på kaffe :-)

Lige en kommentar, når du skriver den ekstra fil, så har du stadig den oprindelige, hvis du skulle få erstattet noget forkert. Ellers kan du jo ikke "undo" dine rettelser. Så skal du da lave en funktion til det også.
Avatar billede martin_moth Mester
14. april 2006 - 10:01 #10
snowman - drop dit eget foslag - det ser lidt forkert ud - og brug svaret fra rynke. Aller behold det du har, men sæt subben udenfor funktionen, og kald den derfra hvor du skal bruge den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester