Hejsan ! du bör nog berätta mer om dina förutsättningar, med vilka verktyg och så vidare. Men i princip borde det nog gå i dom flesta språk att använda filer s.k. random access. Håll bara att reda på att du läser och skriver på rätt stället samt att du inte skriver för mycket.. Du kan göra nåt i stil med nedanstående. Dock är inte positioneringarna och dess längd rätt, så det får du ändra själv. Fungerade om man tog bort första tecknet & efter nybuffer ! Tack ! Nästan rätt ! :o) Med detta kan jag lägga till siffror eller bokstäver, vilket inte var helt fel ! Tycker att det är väldigt "luddigt" vad du egentligen vill göra men ! Hej igen ! Ja, jag förstår precis vad du menar. Att bygga om filstrukturer bygger på det exempel jag gav dig och ovan och du får alltså ta och hämta ut datat precis som du vill ha det till alla variabler. Sedan när du skriver det måste du också hålla reda på vilken position det skall börja samt längden. Någonting ditåt... Men för att förklara problemet jag har så vill jag inte mata in uppgifterna på position 1. Löste det så här :Förändra textfil !
Har en textfil,som jag vill förändra eller kopiera för att få text,siffror på en bestämd position i filen.
Typ : Artnr position 11-30 Benämning position 31-55 osv...
Vill att det ska vara enkelt att förändra inläsning från olika positioner,och att slutresultat blir den tänkta filen.
Exempel på hur den befintliga filen ser ut :
3632 Skjøt 0000023503500 000000000 700
3831 Skive 00000035303500 000000000 700
9403 Pakning 00001638503500 000000000 700
Och filen jag vill ha ska kanske se ut som nedan
3632 Skjøt 00000235 700
Försöker förklara lite bättre :
Har en textfil som exemplet ovan (1:a) Vill själv bestämma från vilken position inläsning ska ske.
Helst kunna förändra via inboxar,men om ingen förändring ska ske, ett förutbestämt värde.
Utläsning i den nya filen ska vara på förutbestämda positioner Ex : pos 11 ,20 tecken / pos 31 ,25 tecken osv.. Så att resultat blir liknande detta :
3632 Skjøt 00000235 700
Tack på förhand! Sv: Förändra textfil !
I C så är det seek samt tell (samt naturligtvis read/write) du behöver..
PS. antagligen är det här inlägget inte i helt rätt kategori..Sv: Förändra textfil !
open "textfil.txt" for input as #1
open "nyfil.txt" for output as #2
do while not eof(1)
line input #1, buffer
nybuffer = & mid(buffer, 31,15) & mid(buffer,11,20) & mid(buffer, 55,15)
print #2, nybuffer
loop
close #1
close #2
Sv: Förändra textfil !
Nu har jag fått inläsningen från filen okey ! Men utmatning ska ske på andra positioner !
Tips ? Tackar på förhand ! Sv: Förändra textfil !
<code>
open "textfil.txt" for input as #1
open "nyfil.txt" for output as #2
do while not eof(1)
line input #1, buffer
field1 = mid(buffer, 31,15)
field2 = mid(buffer,11,20)
field3 = mid(buffer, 55,15)
print #2, field3 & " 12345" & field1 & " 999" & field1
loop
close #1
close #2
</code>Sv: Förändra textfil !
Men..
Vill bestämma vart det man läst in ska hamna.
Om man tex läser in "field1" från position 1 och med 15 tecken, och "Field2" från position 25 och 8 tecken så har jag fått infot jag vill ha i "behållaren" buffer ! Bra !
Att tillägga är att filen är "nästan" i tabellform (Tabseparerat?)
När man sen läser ut datat i den nya textfilen, vill jag ha den i "tabellform" alltså bestämda positioner.
Dock ingen fältseparering..
För den filen ska sedan läsas in i ett program och det är DETTA program som bestämmer vart inläsning sker. Se nedanstående exempel, Det är ungefär så jag vill att filen ska se ut.
Och i ASCII format. (formatändelse ex.asc) (Ps Varje rad ska innehålla max 190 tecken)
BO000500001987301001 H4 12V 60/55W, P43 T PIN0H305 000296
BO000500001987301002 H4 PLUS 30 12V 60/55W, P40H305 000250 BO000500001987301003 H1 PLUS 30 12V 55W, P14,50H305 000125
Om man sen kan förändra inläsningsparametrarna via textbox så vore det ännu bättre !
Är det någon som förstår vad jag menar ?
Tack på förhand !Sv: Förändra textfil !
Vad gäller placeringen av de olika kolumnerna så är det Tab(column i pixel) som gäller.
Du kan använda Tab() tillsammans med Print# i en Form, PictureBox eller Printer.
Använd Print# och Tab() när du skriver till din fil.
Använd ScaleMod = 3 Pixel (underlättar betydligt) .Sv: Förändra textfil !
Har skrivit om lite i mina frågor,kanske någon inte tycker att det är så luddigt nu då ?
Annars är det bara att fråga !! Kanske lättare med en dialog?
Eftersom jag inte riktigt hur jag ska utföra detta,
så vore det bra med exempel, typ Pelles svar ovan !
Tackar på förhand !
Mvh JanneSv: Förändra textfil !
För att kunna leverera en färdig rutin behövs således spec på källfil och målfil för att få dig i mål.
Ex:
Pos 1-5, kundnummer
Pos 6-11, orgnr
Sen i den nya filen
Pos 1,11 orgnr
Pos 12,5 kundnummerSv: Förändra textfil !
Utan att jag kanske vill börja på position 11.. och vidare,
positioner är ALLTID på bestämd plats i den nya filen !
Pos 1-5 KundNr
Pos 6-11 OrgNr
Nya filen
Pos 11-15 KundNr
Pos 31-42 OrgNr
Alltså utan tecken på de första 10 positionerna
Postbeskrivning enlig nedan : Obs ! Använder strecket bara för att visa var positioner börjar och slutar och antal tecken.
00|0000|0000|00000000000000000000|0000000000000000000000000|
Så fortsätter textfilen till änden på första raden. Tills den är uppe på slutet dvs 190 tecken sen börjar nästa 190 tecken på nästa rad !
Tack än en gångSv: Förändra textfil !
Private Sub Command8_Click()
'Bestämmer hur många tecken respektive "tabell" får.
'Med början från position 1
Dim FtgKod As String * 2 ' Företagskod
Dim ProdGr As String * 4 ' Produktgrupp
Dim Vrg As String * 4 ' Varugrupp
Dim ArtNr As String * 20 ' Artikelnummer
Dim Benamn As String * 25 ' Benämning
Dim AltBenamn As String * 23 ' Alternativ benämning
Dim CaPris As String * 8 ' Ca pris
'Hämta filen
Open "D:\Test\test1.txt" For Input As #1
'Öppna filen eller gör en ny !
Open "D:\Test\Nyfil1Dim.Txt" For Output As #2
Do While Not EOF(1)
Line Input #1, buffer
Field1 = Mid(buffer, 1, 15)
Field2 = Mid(buffer, 16, 25)
Field3 = Mid(buffer, 47, 8)
Field4 = Mid(buffer, 56, 2)
Field5 = Mid(buffer, 60, 15)
Field6 = Mid(buffer, 76, 8)
Field7 = Mid(buffer, 85, 3)
'Välj Field(X) eller ""
FtgKod = "DM"
ProdGr = ""
Vrg = Field7
ArtNr = Field1
Benamn = Field2
AltBenamn = Field5
CaPris = Field3
Print #2, FtgKod & ProdGr & Vrg & ArtNr & Benamn & CaPris
Loop
Close #1
Close #2
End Sub