tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
1393
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    Also mein Problem ist folgendes:
    Ich lese eine Textdatei in ein Stringarray ein. Dann will ich z.b. ab Zeile 33 bis i die Zeilen des Arrays mit dem eingelesenen Text in ein anderes Stringarray schreiben. Grund ist, dass ich danach aus der anderen Stringdatei auslesen will. (ich weiß ich könnte das auch direkt aus dem anderen Array machen aber Das ist mir zu umständlich, da die maximale Dateigröße aller Warscheinlichkeit niemals 100Kb überschreiten wird)

    Das Problem dabei ist, dass es eine "nullreferenz-wasweiss ich" gibt. Wie schaff ich es jetzt in ein leeres Array ohne definierte Grenzen einfach Strings reinzuschreiben?
    definiert ist es so:
    Public readstring() as String

    reingeschrieben werden soll wiefolgt:
    readstring(d) = "blabla fasel blubber"

    d ist dabei eine wachsende int-Variable

    wie also bekomme ich es hin einen String zu schreiben den ich danach in ein File schreiben kann? (mit IO.File.Writealllines)

    Wenn das nicht mit vb.net klappt muss ich bei dem Projekt wieder mit vb6 anfangen =/, was ich eigentlich nicht verstehe da vb net ja neuer ist und eigentlich mehr können sollte.

    Danke schonmal für die hoffentlich bald kommende Hilfe =)
     

  2. #2
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Nimm einfach eine Liste.
    Code vbnet:
    1
    
    List(Of String)
    Namespace: System.Collection.Generics

    Die Liste hätte dann auch wieder eine Methode (ToArray) um ein Array auszugeben.
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  3. #3
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    danke ich hoffe nur das funktioniert dann am Ende auch so wie ich das brauche.
     

  4. #4
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Wieso erstellst du das Array nicht gleich in der richtigen Größe? Du hast doch die Information!
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  5. #5
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    leider hab ich die Information nicht ganz sicher. Ich sagte nur, dass es fast unmöglich ist das File auf diese Größe aufzupumpen. Das programm soll .eps in .cnc Files umwandeln für eine CNC-Maschine(sonst muss man das ganze per hand eingeben). Dabei hat man immer eine Zeile mehr im File pro linie in der Zeichnung. Und je nachdem wie die Zeichnung aufgebaut ist, Kommen am ende mehr oder weniger Sätze raus. Und wenn sich jemand die mühe macht eine Zeichnung mit über 2000 Objekten zu fertigen, muss das Programm natürlich mehr als nur eine bestimmte Anzahl von Zeilen können. Ich möchte eben einfach ein Anpassungsfähiges Programm haben, das keinen Error fabriziert wenn das File zu groß ist.

    Aber das mit der List funktioniert einwandfrei(und erspart mir sogar eine zusätzliche Variable für den Index)

    wenn nico das jetz anders gemeint hat, dann entschuldigung. So ganz bin ich eben noch nich drin im vb .net, und alles wissen ist ja auch nicht Pflicht :P
     

  6. #6
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Zitat Zitat von fredlllll Beitrag anzeigen
    und alles wissen ist ja auch nicht Pflicht :P
    sagt ja auch keiner

    Wenn ich das richtig verstanden hab, liest du die komplette Datei ein.
    File.ReadAllLine liefert dir schon ein fertiges Array.

    Wenn du daraus nur einen bestimmten Satz benötigst an einer weiteren Stelle weißt du das auch, weil dies muss ja irgendwann festgelegt werden.
    Also ergibt sich die Größe des neuen Arrays aus Ende der Auswahl minus dem Anfang.

    Beispiel
    Code csharp:
    1
    2
    3
    4
    5
    
    string[] all = new string[10]();
    // jetzt daraus die Zeilen 5 - 8 die Information können zum Beispiel durch Benutzereingabe in das Programm gelangen
    int size = 8 - 5 + 1 // wieso plus eins? Weil 8 - 5 = 3, aber 4 Zeilen selektiert werden sollen
    string[] subset = new string[size]();
    // jetzt nur noch die Daten kopieren
    Wie Spyke schon geschrieben hat:
    Du kannst das natürlich auch mit einer Generic List machen.
    Wenn die Collection sich jedoch nicht permanent ändert ist ein Array besser an der STelle
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  7. #7
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    Nope ein fertiges Array kommt da jetz leider nich so ganz in frage :P

    hier mal ein Beispiel:
    ich habe diesen text
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    %!PS-Adobe-2.0 EPSF-2.0
    %%BoundingBox: 20 20 560 384
    %%Title: C:\Dokumente und Einstellungen\Schueler228\Desktop\test.eps 
    %%Creator: AutoCAD LT PSOUT
    %%For: Schulreferat-IK, LHM
    %%Pages: 1
    %%DocumentFonts: (atend)
    %%DocumentNeededFonts: (atend)
    %%CreationDate: 2009-07-21
    %%EndComments
    save
    20 20 translate
    0.24 dup scale
    0 setlinewidth
    /ACADLayer  { pop } def
    /ACADColor { setrgbcolor pop } def
    /ACADLtype { pop
    userdict /Linedict known not { /Linedict 100 dict def } if
    1 index cvn Linedict exch known not {
    mark 1 index { dup 0 eq { pop 1 72.0 div } if abs } forall
    counttomark 2 add -1 roll astore exch pop
    1 index cvn exch Linedict begin def end }
    { pop } ifelse 
    Linedict begin cvx exec 0 setdash end } bind def
    /bd{bind def}bind def /m{moveto}bd /l{lineto}bd /s{stroke}bd
    /a{arc}bd /an{arcn}bd /gs{gsave}bd /gr{grestore}bd
    /cp{closepath}bd /tr{translate}bd /sc{scale}bd /co{concat}bd
    /ff{findfont}bd /sf{setfont}bd /sh{show}bd /np{newpath}bd
    /sw{setlinewidth}bd /sj{setlinejoin}bd /sm{setmiterlimit}bd
    /cl{clip}bd /fi{fill}bd
    %%EndProlog
    %%Page: 1 1
    gs np -20 -20 m -20 1533 l  2268 1533 l 2268 -20 l cp cl np 7 0 0 0 ACADColor
    (KÖRPERKANTEN) ACADLayer (AUSGEZOGEN) [  ] (A) ACADLtype gs 9.7591 9.7579 sc
    65.602 40.1864 tr [ 1 0 0 1 0 0 ] co 0 sw 0 sj 10 sm np 0 0 m 80 0 l 80 80 l
    0 80 l cp s gr gs 9.7591 9.7579 sc 65.602 40.1864 tr 10 10 m 70 10 l s gr gs
    9.7591 9.7579 sc 65.602 40.1864 tr 70 10 m 40 20 l s gr gs 9.7591 9.7579 sc
    65.602 40.1864 tr [ 1 0 0 1 40 40 ] co np 0 0 30 0 180 a s gr
    showpage
    %%Trailer
    restore
    %%DocumentFonts:
    %%DocumentNeededFonts:
    ich lese so lange ein bis ich %%Page: 1 1 finde
    dann lasse ich noch 2 zeilen durchlesen und dann lese ich ein bis ein showpage kommt.
    somit kann ich also nicht wirklich ein festes array definieren da der part den ich einlese zwichen 1 und XXX Zeilen variieren kann.

    Aber das mit der List funktioniert super.

    dann hätte ich aber noch eine Frage:
    in diesen textdateien kann ein item das eingelesen wird mal 1 mal 2 zeilen sein. Wie kann ich jetzt feststellen dass in der ersten Zeile was fehlt? wenn ich jetzt z.b. das array da auslesen will (erstellt mit Split) wo es nicht mehr existiert, produziere ich ja einen error, dadurch merke ich, dass ich 2 zeilen habe. Nur wie schaff ich es danach weiter auszulesen? muss ich ne funktion (bool) schreiben die dann zurückgibt ob der arraywert existiert?
     

  8. #8
    Avatar von Spyke
    Spyke Spyke ist offline Capoeirista
    Registriert seit
    Oct 2002
    Beiträge
    931
    Zitat Zitat von fredlllll Beitrag anzeigen
    dann hätte ich aber noch eine Frage:
    in diesen textdateien kann ein item das eingelesen wird mal 1 mal 2 zeilen sein. Wie kann ich jetzt feststellen dass in der ersten Zeile was fehlt? wenn ich jetzt z.b. das array da auslesen will (erstellt mit Split) wo es nicht mehr existiert, produziere ich ja einen error, dadurch merke ich, dass ich 2 zeilen habe. Nur wie schaff ich es danach weiter auszulesen? muss ich ne funktion (bool) schreiben die dann zurückgibt ob der arraywert existiert?
    Hast du ein konkretes Beispiel, hab gerade probleme mich darein zu finden.
    Ansonsten könntest du mit hilfe von delegates einige liste Methoden verwenden (Find, Exists, FindAll, etc.)
     
    www.iv-interactive.de - Projektewebsite
    WikiParser - aktuelles Projekt

  9. #9
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    versuchen wirs mal hiermit:
    wert1 wert2 wert3 wert4 wert5 wert6

    das wäre die komplette zeile
    wenn nun ein paar werte besonders lang sind schaut das später dann so aus:
    wert1 wert2 wert3 wert4
    wert5 wert6

    ich lese also so ein
    array(0)
    array(1)
    array(2)
    array(3)
    array(4)
    array(5)
    beim 2ten sind aber 4 und 5 leer und erzeugen einen error beim lesen. das sagt mir dass dieser wert dann wohl in der nächsten zeile zu finden ist. soll ich jetz ne funktion schrieben die einfach true oder false zurückgibt wenn ein error kommt beim lesen der variablen? (sind alle public im modul)
     

  10. #10
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    dann hätte ich aber noch eine Frage:
    in diesen textdateien kann ein item das eingelesen wird mal 1 mal 2 zeilen sein. Wie kann ich jetzt feststellen dass in der ersten Zeile was fehlt? wenn ich jetzt z.b. das array da auslesen will (erstellt mit Split) wo es nicht mehr existiert, produziere ich ja einen error, dadurch merke ich, dass ich 2 zeilen habe. Nur wie schaff ich es danach weiter auszulesen? muss ich ne funktion (bool) schreiben die dann zurückgibt ob der arraywert existiert?
    Wenn du weißt, wie viele Einträge du pro Zeile erwartest, dann kannst du einfach prüfen, ob die Länge des Arrays das du abfragst der erwarteten Länge entspricht. Wenn das nicht so ist, dann weißt du, dass du in der nächsten Zeile gucken musst.

    ...passt das so ungefähr?
     
    http://dirkgoldecker.spaces.live.com

    . Microsoft Certified Technology Specialist
    . Microsoft Certified Professional Developer
    |-> Web Applications

  11. #11
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    Ja aber wie kann ich Das einfach prüfen? Extra mit der Funktion oder gibts ein "if array(233).err = true then"

    Aber zurzeit muss ich eh erstmal drauf warten ob das Programm später dann überhaupt gebraucht wird XD
     

  12. #12
    M4st3r M4st3r ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Ort
    Frankfurt am Main
    Beiträge
    297
    Code csharp:
    1
    2
    3
    4
    5
    6
    
    int erwarteteLänge = 5;
     
    if(arr.length() < erwarteteLänge - 1)
    {
        // In der nächsten Zeile stehen weitere Werte für das Array
    }
     
    http://dirkgoldecker.spaces.live.com

    . Microsoft Certified Technology Specialist
    . Microsoft Certified Professional Developer
    |-> Web Applications

  13. #13
    fredlllll fredlllll ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    120
    mein problem is nur ich weiß nich wo genau er jetzt trennt. es kann ja jetz sein,dass in der ersten mal 5 mal 6 argumente stehen. Also denke ich ich mach mir ne Funktion die bei einem Error ein False zurüchgibt oder so.

    danke für die hilfe =)
     

Ähnliche Themen

  1. Wert zuweisen
    Von Dauber im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 30.08.07, 08:01
  2. Dem Objekt einen Wert zuweisen ?
    Von desaster0505 im Forum Java
    Antworten: 9
    Letzter Beitrag: 23.01.07, 22:14
  3. string wert zuweisen
    Von masda im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 26.10.04, 16:59
  4. Wert einer Variable zuweisen
    Von izb im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 01.07.04, 10:04
  5. Wert aus Access Tabelle zuweisen
    Von zawis im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 14.10.03, 08:23