fatalicus Skrevet 16. februar 2007 Del Skrevet 16. februar 2007 jeg trenger hjelp (for å si det mildt...) jeg har en liste som egentlig skal være komma separert (er en inventory liste fra symantec ghost for de som lusrer på det.) denne listen når jeg først fikk den ut var på følgende oppsett: DX2200-RHE-PRIV Adapter Address,00-19-DB-2E-D3-C4 SerialNumber, Model, Name, UserName, 127-1 Adapter Address,00-0F-FE-17-B1-94 SerialNumber,CZC5061FFX Model,HP dx2000 MT(PL162ES) Name,127-1 UserName, 183-LARER Adapter Address,00-0F-FE-33-F7-5F SerialNumber, Model, Name, UserName, som dere muligens skjønner så blir ikke dette helt riktig når det importeres rundt omkring.. så klarte jeg å redusere denne til slik som dette: DX2200-RHE-PRIV ,00-19-DB-2E-D3-C4 , , , , 127-1 ,00-0F-FE-17-B1-94 ,CZC5061FFX ,HP dx2000 MT(PL162ES) ,127-1 , 183-LARER ,00-0F-FE-33-F7-5F , , , , det eneste jeg trenger når er å få byttet alle kommaer med dobbel backspace og ny komma slik at all infoen kommer på samme linje slik som det skal være: DX2200-RHE-PRIV,00-19-DB-2E-D3-C4,,,, 127-1,00-0F-FE-17-B1-94,CZC5061FFX,HP dx2000 MT(PL162ES),127-1, 183-LARER,00-0F-FE-33-F7-5F,,,, det hadde kanskje vært mulig å få gjort noe slik at den bare bruker en backspace foran alle komme også.. men jeg har prøvd og prøvd, og letet etter koder på nettet og spørt ett par venner, men jeg får det faen ikke til! (helvete heller.. skulle fulgt bedre med i de timene..) er det noen som kunne hjulpet meg med en løsning til dette? hele greia ligger i en .txt fil slik som eksempel 2 viser.. jeg vil på forhånd takke for all mulig hjelp som jeg kan få! Lenke til kommentar
aadnk Skrevet 16. februar 2007 Del Skrevet 16. februar 2007 Filen er nå teknisk sett egentlig ikke kommaseparert - den er først segmentert ved linjer, og deretter med komma (med èn linje dedikert til overskrift). Det er en vesentlig forskjell med dette da linjene også kan brukes til å segmentere tekstfilen. I VB.NET ville jeg trukket ut all data på følgende måte: Imports System.IO Public Class Form1 ' Listen over alle gjenstander Dim Inventory As New List(Of Item) Public Sub LoadItems(ByVal Path As String) ' Åpne den gitte fil LoadItems(New FileStream(Path, FileMode.Open)) End Sub Public Sub LoadItems(ByVal Stream As Stream) Dim aLines() As String, aData() As Object, Tell As Integer Dim LineSegment As Char() = {","c} ' Åpne den gitte strøm for avlesning Using oStream As New StreamReader(Stream) ' Hent all innhold og segmenter i linjer ... aLines = oStream.ReadToEnd.Split(Environment.NewLine) ' Initialiser array ReDim aData(aLines.Length - 1) ' ... og segmenter hver av disse i en kommadelt array For Tell = 0 To aLines.Length - 1 aData(Tell) = aLines(Tell).Split(LineSegment, 2) Next ' Gå gjennom hver sjette linje (seks linjer definerer en gjenstand) For Tell = 0 To aLines.Length - 1 Step 6 ' Lag gjenstanden Inventory.Add(New Item(aData(Tell)(0), aData(Tell + 1)(1), aData(Tell + 2)(1), _ aData(Tell + 3)(1), aData(Tell + 4)(1), aData(Tell + 5)(1))) Next End Using End Sub Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' Endre dette til hvor din tekstfil ligger LoadItems("C:\Data.txt") End Sub End Class Public Class Item ' Tilhørende egenskaper Public ID As String Public AdapterAddress As String Public SerialNumber As String Public Model As String Public Name As String Public UserName As String Public Sub New() ' Behold for å tillate serialisering End Sub Public Sub New(ByVal ID As String, ByVal AdapterAddress As String, ByVal SerialNumber As String, _ ByVal Model As String, ByVal Name As String, ByVal UserName As String) ' Sett egenskaper With Me .ID = ID .AdapterAddress = AdapterAddress .SerialNumber = SerialNumber .Model = Model .Name = Name .UserName = UserName End With End Sub End Class Lenke til kommentar
fatalicus Skrevet 16. februar 2007 Forfatter Del Skrevet 16. februar 2007 ser ut til at jeg må skaffe meg VB.NET.. (har VB 6 nå) fra det jeg skjønte fra koden din, så deler den opp hver del som skal bli en linje i et eget segment som den igjen deler opp i hver del som skal deles av komma (hehe, mye deling der) deretter linjer den det opp og komma separerer det.. stemmer det sånn ca? skal komme tilbake med hvordan det går så fort jeg får tak i VB.NET (går vel til innkjøp av det imorgen..) takker! Lenke til kommentar
aadnk Skrevet 16. februar 2007 Del Skrevet 16. februar 2007 (endret) skal komme tilbake med hvordan det går så fort jeg får tak i VB.NET (går vel til innkjøp av det imorgen..) 7957797[/snapback] Det er ikke nødvendig det. Du kan laste ned VB.NET helt gratis på Microsofts hjemmesider. I alle tilfeller kan jeg godt oversette koden til VB6. Jeg brukte VB.NET kun fordi du ikke spesielt nevnte hvilken versjon av VB du benyttet. Private Type Item ID As String AdapterAddress As String SerialNumber As String Model As String Name As String UserName As String End Type ' Inneholder alle gjenstander Private Inventory() As Item Private ItemCount As Long Public Sub LoadItems(Path As String) Dim aLines, aData() As Variant, Tell As Long ' Hent alle linjer fra den gitte fil aLines = Split(LoadFile(Path), vbNewLine) ' Initialiser array ReDim aData(LBound(aLines) To UBound(aLines)) ' Gå gjennom hver av disse linjer og del dem opp i to etter komma For Tell = LBound(aLines) To UBound(aLines) aData(Tell) = Split(aLines(Tell), ",", 2) Next ' Gå gjennom seks og seks linjer og legg til en gjenstand For Tell = LBound(aLines) To UBound(aLines) Step 6 AddItem aData(Tell)(0), aData(Tell + 1)(1), aData(Tell + 2)(1), aData(Tell + 3)(1), _ aData(Tell + 4)(1), aData(Tell + 5)(1) Next End Sub Public Sub AddItem(ID, AdapterAddress, SerialNumber, Model, Name, UserName) ' Reinitialiser array (kan optimaliseres) ReDim Preserve Inventory(ItemCount) ' Sett verdier With Inventory(ItemCount) .ID = ID .AdapterAddress = AdapterAddress .SerialNumber = SerialNumber .Model = Model .Name = Name .UserName = UserName End With ' Øk antall elementer ItemCount = ItemCount + 1 End Sub Public Function LoadFile(Path As String) As String Dim Free As Long, Buffer As String ' Se om filen faktisk eksisterer If Dir(Path) = "" Then Exit Function End If ' Hent ledig filnummer Free = FreeFile ' Åpne fil Open Path For Binary Access Read Lock Write As #Free ' Alloker buffer Buffer = Space(LOF(Free)) ' Hent all data Get #Free, , Buffer Close #Free ' Returner filinnhold LoadFile = Buffer End Function Private Sub Form_Load() ' Last inn fil LoadItems "C:\Data.txt" Stop End Sub takker! 7957797[/snapback] Ikke noe problem. Endret 16. februar 2007 av aadnk Lenke til kommentar
fatalicus Skrevet 16. februar 2007 Forfatter Del Skrevet 16. februar 2007 igjen.. du er gud.. Lenke til kommentar
GeirGrusom Skrevet 17. februar 2007 Del Skrevet 17. februar 2007 aadnk, du er syk Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå