split/replace help in VB6

Pagina: 1
Acties:

  • S-Cript
  • Registratie: Augustus 2001
  • Laatst online: 26-03-2025
hallo, ik heb het volgende probleem..

ik heb een file data.txt
deze bevat de namen van alle files van eem bepaalde folder
wanneer ik het replace-commando gebruik op files die beginnen met een cijfer dan werkt het programma niet..
de rest doet hij naar behoren...

ipv replace zit ik te denken aan het split commando op dit probleem op te lossen door hem te laten splitten op de "." in de file naam

de code zou dan zijn:
open "data.txt" for input #1
input #1, naam
nieuwnaam= split(naam, ".")
vollenaam = nieuwnaam & ".doc"

open vollenaam for output #2
.......
etc
alleen dit werkt niet, een ideetje

niets bijzonders


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
'k Zou het eens met regular expressions proberen. Dat werkt wat beter dan de replace functie. :)

Verwijderd

en bij split krijg je toch een array dus zou het iets van nieuwenaam[0] moeten zijn

toch???

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 16:17

johnwoo

3S-GTE

Op vrijdag 21 december 2001 09:12 schreef S-Cript het volgende:
[...]
nieuwnaam= split(naam, ".")
vollenaam = nieuwnaam & ".doc"
[...]
split levert een string array op, dus in de tweede regel probeer je een array en een string te concateneren... Probeer van die tweede regel eens dit te maken:
vollenaam = nieuwnaam(0) & ".doc"

Nog netter is natuurlijk gewoon de laatste punt op te zoeken (een filename kan meerdere punten bevatten!) Probeer daarvoor eens zoiets:
code:
1
2
3
4
5
6
7
8
9
10
Dim Pos As Integer, Naam As String
[...]
Pos = InStrRev(Naam, ".")
If Pos Then
  ' Punt in naam: verander extensie in .doc
  Naam = Left$(Naam, Pos) & "doc"
Else
  ' Geen punt in naam: plak .doc erachter
  Naam = Naam & ".doc"
End If

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

1. Je vertelt niet wat je wilt doen.
ik neem aan dat je ergens de extentie van wilt vervangen of zo?

Je gedachten werken niet helemaal.
Wat dacht je van de bestandsnaam: test.tralala.doc?
code:
1
2
3
4
5
6
7
t=instr(oudenaam,'.',1)
do while(t>0)
  u=t
  t=instr(oudenaam,'.',1)
loop;
if u=0 then u = len(oudenaam)
nieuwnaam = left(oudenaam,u) + ".doc"

Localhost, sweet localhost


  • S-Cript
  • Registratie: Augustus 2001
  • Laatst online: 26-03-2025
allemaal bedankt voor de verbeteringen alvast

probleem blijft echter dat wanneer er een file is
welke begint met cijfers ( ongeacht de lengte)
dat vb er in mijn geval de filenaam voor de letters afkapt
bijv 4148A.txt wordt 4148.doc
wanneer er meerder files zijn bijv
4148A, 4148B etc dan krijg je maar 1 file ( de laatste)
en dit zonder extensie
bijv filenaam 4148
alle andere combinaties werken gewoon wel
zelfs de 2e gedachte van mij geeft exact hetzelfde resultaat
ik heb nu replace,split gebruikt

Open "data.txt" For Input As #1
Do While Not EOF(1)
Input #1, docnaam
nieuwenaam = Replace(docnaam, ".txt", ".doc")
Open nieuwenaam For Output As #2
Close #2

Loop
Close #1
Kill "data.txt"


note: open/close #2 is om een waarde in deze doc te schrijven......

niets bijzonders


  • S-Cript
  • Registratie: Augustus 2001
  • Laatst online: 26-03-2025
opgelost...

ff nieuwnaam en docnaam as String gedeclareerd
en dat is weer gefixed

niets bijzonders


Verwijderd

Gebruik de methode met InstrRev van johnwoo.

Het openen van files met #1 en #2 is eigenlijk harstikke fout en kan onverwachte fouten opleveren als je applicatie bijvoorbeeld meerdere malen opgestart wordt. In 99,9999% procent van de gevallen zul je echter niets merken van deze fout.

Officieel moet je doen:
code:
1
2
3
4
5
dim f as integer
f = FreeFile
open ..... as f
....
close f

Overigens de # zijn optioneel, dat is nog een erfenis uit het oude basic.
Pagina: 1