Hallo!
Hi!
Ich habe noch ein paar Fragen zu VB.NET:
Ich habe zum Beispiel zwei Arrays bzw. Arraylists. Diese
möchte nun logisch verknüpfen. Also bei Array0 = Array1 AND
Array2 sollen im Ergebnisarray nur jene Werte stehen, die
sowohl im ersten als auch im zweiten Array existieren. Gibt es
da schon etwas Fertiges? Und kann man auch andere
Verknüpfungen (OR, NOT) realisieren?
Was soll denn „Array0 = Array1“ bedeuten? Gleichheit, wenn jedes Element gleich ist (sowohl vom Wert her als auch von der Reihenfolge)? Oder reicht auch schon, dass jedes Element nur vorhanden sein muss?
Im zweiten Fall suchst Du letztlich eine Implementierung für eine Menge (engl. Set ). Dazu gibt’s einige Implementierungen im Netz: http://www.google.de/search?hl=de&safe=off&q=vb.net+…
Für den ersten Fall wüsste ich nicht, dass es schon etwas Existierendes gibt, aber die Implementierung ist ziemlich trivial, sobald man mal festgelegt hat, was in diesem Fall z.B. Array0 OR Array1 bedeuten soll (wieder unter Betrachtung der Reihenfolge!).
Ich habe eine Textdatei mit etwa 45MB. Diese durchlaufe ich
zeilenweise (StreamReader.ReadLine()). Ein gesamter
Durchlauf mit ein paar Vergleichen dauert etwa 11 Sekunden.
Könnte ich die Suchzeit verkürzen, wenn die die Datei in den
Arbeitsspeicher einlesen würde?
Wenn ja, wie mache ich das dann am besten? Alles in eine
Stringvariable? Kann die überhaupt so große Datenmengen auch
aufnehmen und wie kann ich dann die einzelnen Zeilen auslesen?
Gibt es andere Möglichkeiten?
Du kannst schon 45MB in einen String einlesen, aber ich glaube nicht, dass sich die Laufzeit nur dadurch, dass Du weniger Leseoperationen hast (dafür aber einen größeren Bereich liest) sehr stark ändert.
Da Du aber auch nicht schreibst, was Du nach dem Einlesen der Datei eigentlich erreichen willst, kann man Dir auch nur schwer helfen.
Wenn der String unbedingt „zeilenweise“ zerlegt werden soll, kannst Du das z.B. per String.Split erreichen. Also in etwa (ich hoffe ich bekomm’ das in VB.NET korrekt hin):
Dim s As String
Dim lines As String()
s = New System.IO.StreamReader("C:\MeineDatei.txt").ReadToEnd()
lines = s.Split(Environment.NewLine)
Wenn ich mein Programm dann verteilen möchte, muss ja auf dem
Zielrechner schon das .NET-Framework 2.0 installiert sein.
Welche (frei verfügbare) Installationsprogramme gibt es, die
checken können, ob das Framework schon existiert und wenn
nicht, es installiert?
Google ist Dein Freund…
Je nach verwendeter Entwicklungsumgebung ist u.U. schon was mit drin: VisualStudio 2005 bspw. erlaubt Dir, Setup-Projekte zu erstellen, aus denen hinten ein msi-Paket (Windows Installer) rausfällt.
Die anderen Installationsaufgaben sind dann eh nicht mehr das
Problem. Das wären dann nur mehr ein paar Dateien, die kopiert
werden.
mfg
chris
Gruß,
Martin