Avatar billede fqthjoe Nybegynder
28. juli 2003 - 12:35 Der er 14 kommentarer og
1 løsning

kopiere text fra fil at anden

Hej Eksperter
Jeg åbner en række textfiler ( en for en ) over i en Textbox. Nu vil jeg gerne "klippe" 2 linier ud fra text-filerne.
LinieX hedder ActiveNo XXXXX
LinieY hedder Type YYYYY
Linerne begynder altid med ActiveNo og Type, men XXXXX og YYYYY er altid forskelligt. Men altid 5 tegn, men desværre ikke samme linienr.
Kan man smidde dette over i en ny textbox og så kunne gemme denne fil.
Det hele ville jo være perfekt hvis man kunne vælge X-antal filer og klikke på "Make IT" og så vupti de nye filer bliver oprettet automatisk med fortløbne filnavne.
Men måske dette skal være nyt spørgsmål, hvis det når så langt.
vh thjoe
Avatar billede overchord Nybegynder
28. juli 2003 - 12:40 #1
Antager at du har aabnet filen som #1 og dimensioneret ActiveNo og Type

Dim strTemp as string

while not EOF(#1)
  input #1, ActiveNo, Type
  if ActiveNo = xxxxxx and type = yyyyy then
          strTemp = form.textbox.caption
          form.textbox.caption = strTemp & ActiveNo & Type
  end if
wend

Du skal sikkert formatere indholdet af textboxen lidt bedre, men maaske var det nemmere at bruge en listbox eller combobox og .AddItem istedet
Avatar billede Slettet bruger
28. juli 2003 - 12:41 #2
Du kan bruge Instr til at søge efter dine tekster. Hvis du ved at der altid kommer en ny linie efter kan du jå søge fra den først fundne til der kommer et linieskift(vbCrLf) og så kopiere ud med Mid funktionen, om du lægger det i en ny tekstbox eller i en variabel er ligemeget. Til sidst opretter du jo bare en ny fil og smider indholdet i den.
Avatar billede fqthjoe Nybegynder
28. juli 2003 - 13:17 #3
Der kommer altid "ny linie" efter det jeg skal bruge.
Jeg har ikke Dim'et ActiveNO og Type. Er lidt i tvivl hvordan.
Min "Lille smipel" kode ser pt. sådan ud:

Dim FileName As String
  Dim FileNr As Integer
  Dim txt As String
  FileName = "C:\html\htmless\html\txt\25917.txt"
  FileNr = FreeFile
  Open FileName For Input As FileNr
  txt = Input(LOF(FileNr), FileNr)
  Text1 = txt
  Close (FileNr)

vh thjoe
Avatar billede overchord Nybegynder
28. juli 2003 - 13:57 #4
hvis du har ActiveNo og Type i hver linje kan du loebe igennem hele filens indhold og finde de linjer hvor ActiveNo = xxxx og type = yyyy som jeg foreslog.
Derefter kan du saa enten overfoere dem til en textbox eller, hvis du har flere filer du vil hente fra, gemme linjerne i et arry indtil du er klar til at skrive til en ny fil.
Avatar billede Slettet bruger
28. juli 2003 - 14:03 #5
Som jeg læser det så er det xxxxx og yyyyy han gerne vil have ud i de linier hvor der står Activeno og Type, hvis det er tilfældet så skal der noget stregsammenligning til. Eks.
If Instr(linien, "ActiveNo") > 0 then
  msgbox "her har vi en linie med activeno"
End If
Avatar billede fqthjoe Nybegynder
28. juli 2003 - 14:50 #6
Jo, det er hvad der står efter ActiveNO og Type jeg har interesseret. Men selve navnene AcitiveNO og Type må gerne komme med.
Måske er jeg bare for "grøn" til VB, at jeg behøver et konkret source-eksempel. Kan det lade sig gøre ?
Avatar billede overchord Nybegynder
28. juli 2003 - 17:11 #7
Er filen komma separeret?
Avatar billede mikker Nybegynder
28. juli 2003 - 21:12 #8
Tag en linie ad gangen istf. hele filen.

Dim TextLine,a,t
a="":b=""
Open "TESTFILE" For Input As #1  ' Open file.
Do While Not EOF(1)  ' Loop until end of file.
  Line Input #1, TextLine  ' Read line into variable.
if left(textline,1)= "A" then
a = right(textline,5)
end if
if left(textline,1)= "T" then
b = right(textline,5)
end if
Loop
Close #1  ' Close file.

Ved ikke lige hvad du skal bruge det til, men jeg synes det er nemmere blot at tage en linie ad gangen :o)

- Mikker
Avatar billede fqthjoe Nybegynder
29. juli 2003 - 11:20 #9
Nope, filen ikke kommasep. desværre.
Jeg skal så bruge de 2 omtalte linier til en ny fil. Som jeg skal bruge til at indsætte i et regneark/evt.accessbase.
vh thjoe

Uddrag af txt-fil:

House - telnet4
      ActiveNO Romeo
    Model Cabs
    Modeltype 16A
    Type 016.00
    Start1971
    End2003
Avatar billede mikker Nybegynder
29. juli 2003 - 15:30 #10
Synes du sagde 'altid 5 tegn' ? I ovennævnte har Type da 6 tegn.

Anyway...

Dim TextLine,a,b
a="":b=""
Open "frafil.txt" For Input As #1
Open "tilfil" For Output As #2
Do While Not EOF(1)  ' Loop until end of file.
  Line Input #1, TextLine 
If Instr(linien, "ActiveNo") > 0 then
a = right(textline,5)
write #2,a
end if
If Instr(linien, "Type") > 0 then
b = right(textline,6) ' hvis der er 6 tegn
write #2,b
end if
Loop
Close

Prøv den engang
Avatar billede mikker Nybegynder
29. juli 2003 - 15:32 #11
Og så prøver vi lige igen...

Dim TextLine,a,b
a="":b=""
Open "frafil.txt" For Input As #1
Open "tilfil" For Output As #2
Do While Not EOF(1)  ' Loop until end of file.
  Line Input #1, TextLine 
If Instr(Textline, "ActiveNo") > 0 then
a = right(textline,5)
write #2,a
end if
If Instr(Textline, "Type") > 0 then
b = right(textline,6) ' hvis der er 6 tegn
write #2,b
end if
Loop
Close
Avatar billede fqthjoe Nybegynder
29. juli 2003 - 16:21 #12
Mikker
Kanon... præcis det... :-)
Smid endelig et svar......
Kan man "automatisere" det... Jeg har nemlig omkring 200 filer det drejer sig om de hedder 0001.txt, 0002.txt og fremdeles. Så de nye filnavne f.eks. bliver ny0001.txt og fremdeles.
vh thjoe..
Og tak......
Avatar billede mikker Nybegynder
29. juli 2003 - 18:06 #13
Den er ikke testet, men det burde virke :o)
Håber du får glæde af det.

Dim TextLine,a,b,i,frafil,tilfil
for i = 1 to 200 ' hvis der er 200 filer
a="":b=""
frafil = trim(Format(i, "0000") & ".txt")
tilfil = trim("ny" & frafil)
Open fra For Input As #1
Open tilfil For Output As #2
Do While Not EOF(1)  ' Loop until end of file.
  Line Input #1, TextLine 
If Instr(Textline, "ActiveNo") > 0 then
a = right(textline,5)
write #2,a
end if
If Instr(Textline, "Type") > 0 then
b = right(textline,6) ' hvis der er 6 tegn
write #2,b
end if
Loop
Close
next i

- Mikker
Avatar billede fqthjoe Nybegynder
30. juli 2003 - 08:26 #14
Mikker.
Danke.. Lyder kanon din "nye" løsning, men virker desværre ikke.
Fejl: Run-timeError75 - fileNotFound i linien
Open frafil For Input As #1
Har smidt min kode i samme mappe som mine txtfiler.
Er det noget med AppPath ?
Tror det en bakatel... Kan du se hvad der er galt.
Men anyway 1000 thx. for hjælpen.
Avatar billede fqthjoe Nybegynder
30. juli 2003 - 10:06 #15
Mikker
Har fundet "løsningen", så nu virker alles zusammen... danke
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

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging