![]() |
|
|||||||
| Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#11
|
|||
|
|||
|
Thomas Scheidegger schrieb:
Hallo Thomas, >>> 900Mio Bytes zusätzlich, d.h. hier sind schon 1350 Mio Bytes >>> verbraucht. Solchen Code solltest du tunlichst vermeiden. >> Tja und wie Du recht hast .... > > btw, > auch diverse .NET Methoden wie: > File.ReadAllText/ReadAllLines bzw StreamReader.ReadToEnd oä > scheinen 'unglücklich' gelöst und belegen temporär viel/vielfaches an > Speicher. > > Mir wäre gerade keine 'safe' C# Methode bekannt, > eine grosse Textdatei (müsste dann UTF-16 sein) > _direkt_ 1:1 in einen .NET String (prinzipiell 'UTF-16') > einzulesen, ohne dass irgendwo dazwischen umkopiert/umcodiert wird > oder sonstige temporäre Instanzen entstehen > (bzw mehrfaches collection-/StringBuilder-resizing oä). > Möglich dass es mit 'unsafe' oder C++/CLI oder via native-interop > einen workaround gäbe. > > Vielleicht könntest du auch eine Lösung finden, > die vom grossen Byte-array nur nach und nach kleinere 'Ausschnitte' > nach String wandelt, > aber dies wäre im Prinzip auch schon wieder relativ nahe an der > klassischen Stream-Lösung. > Eine Low-Level Lösung rein auf Byte-Array (raw Ascii-Codes) gänzlich > ohne .NET 'String' > ist natürlich prinzipiell auch stets möglich. > Ja das habe ich mir fast gedacht, dass das nicht so ohne weiteres funktioniert. Ich dachte an folgendes: Ich lese Byteweise (Charweise) Vom Beginn weg, bis der Gruppen Delimiter (Satztrenner) erreicht wird. So ermittle ich die Satzlänge. Schwirigkeit ist, dass der 1. Satz bereits einen Delimiter hat, da dies die Maschinensteuerung so benötigt. Satzaufbau: 1E 39 Zeichen Steuercodes für Plz Ausstoss usw. 1D zeilen Trenner 50 Zeichen TEXT 1D .... 50. usw. bis zur neuen SatzTrennung (8Zeilen) Danach kann ich mittels TextReader und Char[] nach immer eine Satzgrösse laden und diese bearbeiten. Eine ähnliche Methode habe ich bereits im Programmteil "Externe Verarbeitung" verwendet, nur habe ich das auf einen Satz mit 444 Zeichen beschränkt. Ziel ist natürlich diese Satzgrösse variabel zu machen, um nicht immer die Datei durchzählen zu müssen. Probleme macht mir eben die Ermittlung der Satzgrösse in Zeichen. Das mit der LowLevel Lösung verstehe ich nicht ganz. Raw Asci ist? 7Bit? wie programmiert man ohne .NET 'String'? Ich dachte schon wenn man eine C-Routine einbindet... aber das ist schwachsinn denk ich .. .das macht alles nur komplizierter. In Wirklichkeit ist die Problemstellung keine Schwere. Naja man muss warscheinlich Zeichen Zähle und die Basis (Satzgrösse) zu ermitteln. -- Grüsse aus Tulln an der Donau Es ist besser zu sagen was man meint, als nur zu meinen was man sagt.(ein gscheiter Mensch) Lange Rede kurzer Sinn, versteht nicht jeder was man will. (war der noch gscheiter??) |
|
|
||||
|
||||
|
|
|
#12
|
|||
|
|||
|
Hallo Richard,
>> Eine Low-Level Lösung rein auf Byte-Array (raw Ascii-Codes) gänzlich >> ohne .NET 'String' >> ist natürlich prinzipiell auch stets möglich. > > Das mit der LowLevel Lösung verstehe ich nicht ganz. > Raw Asci ist? > 7Bit? > wie programmiert man ohne .NET 'String'? > schau dir mal die Klasse System.IO.BinaryReader an. Grüße - Michael - |
|
#13
|
|||
|
|||
|
Michael v. Fondern schrieb:
Hi Michael, > Hallo Richard, >>> Eine Low-Level Lösung rein auf Byte-Array (raw Ascii-Codes) gänzlich >>> ohne .NET 'String' >>> ist natürlich prinzipiell auch stets möglich. >> >> Das mit der LowLevel Lösung verstehe ich nicht ganz. >> Raw Asci ist? >> 7Bit? >> wie programmiert man ohne .NET 'String'? >> > schau dir mal die Klasse System.IO.BinaryReader an. > Supa, werde ich mir heute ansehen. [OT] Sorry ich muss Euch was Fragen: Habt Ihr schon mal mit Thunderbird das Problem gehabt,dass die Aktuellen NewsGruppen Mails nicht abgeholt werden? Zuhause habe ich auf meinen 2 Rechnern das Problem. Die Mails von Euch enden am 2.11. hmm Habe Kabelsignal. [/OT] Dankeschön. -- Grüsse aus Tulln an der Donau Es ist besser zu sagen was man meint, als nur zu meinen was man sagt.(ein gscheiter Mensch) Lange Rede kurzer Sinn, versteht nicht jeder was man will. (war der noch gscheiter??) |
|
#14
|
|||
|
|||
|
Hallo,
Ich schreibe die Vorläufige Lösung hier hin. Für Euch ist das warscheinlich e Pinuts aber Trotzdem: //Öffnen der Dateien file1 = fri.DirectoryName + "\\" + fri.Name; // Satz ermitteln char[] SATZ = new char[500]; using (TextReader input = new StreamReader(new FileStream(file1, FileMode.Open), Encoding.Default)) { for (ReadSatz = 0; ; ReadSatz++) { input.Read(SATZ, ReadSatz, 1); if (SATZ[ReadSatz] == irsc && ReadSatz > 0) break; } } // Satz ermittelt! Ist Zwar kein BinaryReader, aber ich habe den Vorteil, dass ich hier auf eine bereits verwendete Routine für die Weiterverarbeitung zurückgreifen kann. Danke für Eure Hilfe -- Grüsse aus Tulln an der Donau Es ist besser zu sagen was man meint, als nur zu meinen was man sagt.(ein gscheiter Mensch) Lange Rede kurzer Sinn, versteht nicht jeder was man will. (war der noch gscheiter??) |
|
#15
|
|||
|
|||
|
Maurer Richard schrieb:
> [OT] > Sorry ich muss Euch was Fragen: > Habt Ihr schon mal mit Thunderbird das Problem gehabt,dass die Aktuellen > NewsGruppen Mails nicht abgeholt werden? > Zuhause habe ich auf meinen 2 Rechnern das Problem. Die Mails von Euch > enden am 2.11. hmm Habe Kabelsignal. > [/OT] Dankeschön. > Ich antworte mir mal selber gg offensichlich eine Störung beim Provider... Nichts anderes habe ich angenommen sfg Lg |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Byte Array als Input Source | Philipp Kraus | Newsgroup de.comp.lang.java | 1 | 05-09-2009 05:27 PM |
| Byte Array kopieren | Christian Havel | Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp | 4 | 07-23-2008 06:53 AM |
| Byte-Array in String | Herbert Bodner | Newsgroups microsoft.public.de.fox | 3 | 03-26-2008 02:05 PM |
| byte Array auf C# | Christian Havel | Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp | 3 | 03-10-2008 04:05 PM |
| stream in array of byte (.net) | Jocke Esser | Newsgroup de.comp.lang.delphi.misc | 3 | 12-20-2007 04:24 PM |