über OpenFileDialog (Win-Forms-Anwendung) wahlfreier Zugriff
Verfasst: So Jan 02, 2011 2:02 pm
Ich will eine Datei einer > Windows-Forms-Anwendung < über einen > OpenFileDialog < öffnen und dann > wahlfreien Zugriff < darauf erhalten. Der letzte, zugegeben etwas unkonventionelle, Versuch bringt zwar beim Schreiben keine Fehlermeldung. Im Debugger läuft es dann aber doch nicht, da das Array gar keinen Inhalt hat
Es muss kein Array sein, ein Stream / MemoryStream gänge auch - nur eben was mit wahlfreiem Zugriff.
Hier der Problem-Code:

Es muss kein Array sein, ein Stream / MemoryStream gänge auch - nur eben was mit wahlfreiem Zugriff.
Hier der Problem-Code:
Code: Alles auswählen
private void button1_Click(object sender, EventArgs e)
{
// Variablendeklaration:
Byte test = 0;
string in_string = "", out_string = ""; // "fast" nutzlos ...
long in_arr_gr = 0; // Größe der Original-Datei (gepackt)
long out_arr_gr = 0;// Größe der Entpackten Datei - größer geschätzt !!!
byte[] in_array = null; // unten initialisiert
byte[] out_array = null; // unten initialisiert
// Prog. selbst:
// Datei öffnen in Var. "in_string"
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Alle Dateien (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
in_string = ofd.FileName;
// Datei öffnen in Array "in_array"
FileStream in_stream = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br1 = new BinaryReader(in_stream);
// in_array = new byte[in_arr_gr]; // Größe der Original-Datei - entfällt weg. " = null" ???
in_arr_gr = in_string.Length;
in_array = br1.ReadBytes((int)in_arr_gr);
out_arr_gr = in_arr_gr * 2; // die Datei kann so nur doppelt so groß werden !!!
out_array = new byte[out_arr_gr];
// Hier müsste die eigentliche Routine stehen - jetzt einfacher 4-Byte-Kopier-Test
test = in_array[0];
out_array[0] = test;
test = in_array[1];
out_array[1] = test;
test = in_array[2];
out_array[2] = test;
test = in_array[3];
out_array[3] = test;
// Datei speichern unter Var. "out_string"
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Alle Dateien (*.*)|*.*";
if (sfd.ShowDialog() == DialogResult.OK)
out_string = sfd.Filter = "Alle Dateien (*.*)|*.*";
// out_string = sfd.FileName;
// speichern des Array - vorhandene Datei wird überschrieben !!!
FileStream out_stream = new FileStream(sfd.FileName, FileMode.Create);
out_stream.Write(out_array, 0, out_array.Length);
out_stream.Close();
}