Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups microsoft.public.de.* 1 Forum > Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 11-05-2009, 01:43 PM
Maurer Richard
 
Beiträge: n/a
Standard Re: Byte Array OutOfMemory

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??)
Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #12  
Alt 11-05-2009, 08:31 PM
Michael v. Fondern
 
Beiträge: n/a
Standard Re: Byte Array OutOfMemory

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 -
Mit Zitat antworten
  #13  
Alt 11-06-2009, 05:53 AM
Maurer Richard
 
Beiträge: n/a
Standard Re: Byte Array OutOfMemory

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??)
Mit Zitat antworten
  #14  
Alt 11-06-2009, 09:02 AM
Maurer Richard
 
Beiträge: n/a
Standard Re: Byte Array OutOfMemory

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??)
Mit Zitat antworten
  #15  
Alt 11-06-2009, 01:41 PM
Richard Maurer
 
Beiträge: n/a
Standard Re: Byte Array OutOfMemory

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
Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ä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


Alle Zeitangaben in WEZ. Es ist jetzt 09:11 AM Uhr.





Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Forum SEO by Zoints