ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
1393
1393
EMPFEHLEN
-
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 =)
-
Nimm einfach eine Liste.
Namespace: System.Collection.GenericsCode vbnet:1
List(Of String)
Die Liste hätte dann auch wieder eine Methode (ToArray) um ein Array auszugeben.
-
danke ich hoffe nur das funktioniert dann am Ende auch so wie ich das brauche.
-
Wieso erstellst du das Array nicht gleich in der richtigen Größe? Du hast doch die Information!
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
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
-
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
Wie Spyke schon geschrieben hat: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
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 STelleGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Nope ein fertiges Array kommt da jetz leider nich so ganz in frage :P
hier mal ein Beispiel:
ich habe diesen text
ich lese so lange ein bis ich %%Page: 1 1 findeCode :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:
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?
-
-
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)
-
25.07.09 17:35 #10
- Registriert seit
- Jan 2005
- Ort
- Frankfurt am Main
- Beiträge
- 297
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.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?
...passt das so ungefähr?http://dirkgoldecker.spaces.live.com
. Microsoft Certified Technology Specialist
. Microsoft Certified Professional Developer
|-> Web Applications
-
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
-
26.07.09 09:40 #12
- 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
-
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
-
Wert zuweisen
Von Dauber im Forum C/C++Antworten: 1Letzter Beitrag: 30.08.07, 08:01 -
Dem Objekt einen Wert zuweisen ?
Von desaster0505 im Forum JavaAntworten: 9Letzter Beitrag: 23.01.07, 22:14 -
string wert zuweisen
Von masda im Forum C/C++Antworten: 7Letzter Beitrag: 26.10.04, 16:59 -
Wert einer Variable zuweisen
Von izb im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 01.07.04, 10:04 -
Wert aus Access Tabelle zuweisen
Von zawis im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 14.10.03, 08:23





Zitieren


Login





