Autor Beitrag
Ardos
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 19.09.08 20:06 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VAR
Data:array of Byte;
Stream:TFileStream;
i:Integer;
len:LongInt;
begin
   Stream := TFileStream.Create(Filepath, fmOpenRead);
   len:=Stream.Read(len, sizeof(len));
   setlength(Byte,len);
   Stream.Read(Data,len);
   Stream.Free;
end;

so wie ich das verstanden habe müsste die datei jetzt in Data sein, sie ist es aber nicht kann mir wer helfen?

Dia Datei ist auf jeden Fall die richtige ihre Länge wird richtig erkannt

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 19.09.08 20:11 
user profile iconArdos hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VAR
Data:array of Byte;
Stream:TFileStream;
i:Integer;
len:LongInt;
begin
   Stream := TFileStream.Create(Filepath, fmOpenRead);
   len:=Stream.Read(len, sizeof(len));
   setlength(Byte,len);
   Stream.Read(Data,len);
   Stream.Free;
end;


so wie ich das verstanden habe müsste die datei jetzt in Data sein, sie ist es aber nicht kann mir wer helfen?

Dia Datei ist auf jeden Fall die richtige ihre Länge wird richtig erkannt


1. Gewöhn dir bitte Delphi TAGs an, wenn du hier Beiträge schreibst.
2. Siehe Markierung - was stimmt da nicht? ;) Du versuchst grad die Länge des Datentyps "Byte" zu ändern.. nimm stattdessen dein Array, das könnte besser gehen.
3. Du solltest dir try ... finally...end; angewöhnen

_________________
PROGRAMMER: A device for converting coffee into software.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 19.09.08 20:15 
Moin und :welcome: im Forum!

user profile iconArdos hat folgendes geschrieben:
so wie ich das verstanden habe müsste die datei jetzt in Data sein, sie ist es aber nicht kann mir wer helfen?
Muss es unbedingt ein array of Bytesein? :nixweiss: So geht´s mit einem String. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Ardos Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 19.09.08 20:16 
Hm ja ist klar aber es geht trotzdem nicht, finally try und end ändern daran nichts oder?
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 19.09.08 20:20 
Nein, try finally ist nur dazu da, dass der Speicher (auf jeden Fall) freigegeben wird.
Aber hast du schon 2. probiert?

_________________
PROGRAMMER: A device for converting coffee into software.
Ardos Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 19.09.08 20:21 
ja danke string funktioniert muss ichs halt damit machen
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 20.09.08 00:48 
Moin,

user profile iconXentar hat folgendes geschrieben:
2. Siehe Markierung - was stimmt da nicht? ;) Du versuchst grad die Länge des Datentyps "Byte" zu ändern.. nimm stattdessen dein Array, das könnte besser gehen.
das hast du wohl überlesen?!

so war das gemeint:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
VAR
Data:array of Byte;
Stream:TFileStream;
i:Integer;
len:LongInt;
begin
   Stream := TFileStream.Create(Filepath, fmOpenRead);
   len:=Stream.Read(len, sizeof(len));
   setlength(Data,len);
   Stream.Read(Data,len);
   Stream.Free;
end;

und dann sollte es auch mit Byte gehen, musst kein String nehmen!

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 20.09.08 09:40 
Ein array of Byte belegt aber viermal so viel Speicher wie ein String.

Windows reserviert für ein einzelnes Byte 4 Byte Speicher - 32 Bit, also ein Integer. Das ändert sich auch bei einem Array nicht - du hast dann ein array of Integer, bei dem immer nur ein viertel belegt wird. Nicht schön.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 20.09.08 13:48 
user profile iconYogu hat folgendes geschrieben:
Ein array of Byte belegt aber viermal so viel Speicher wie ein String.

Windows reserviert für ein einzelnes Byte 4 Byte Speicher - 32 Bit, also ein Integer. Das ändert sich auch bei einem Array nicht - du hast dann ein array of Integer, bei dem immer nur ein viertel belegt wird. Nicht schön.


Äh, war das nicht so, dass auf das nächste vielfache von 4 aufgerundet wird?
Wenn das array of byte also z.B. die Größe 30 hat, dass dafür dann 32 Byte Speicher reserviert werden?
Wär doch Schwachsinn, wenn dafür 120 Byte reserviert werden.

_________________
PROGRAMMER: A device for converting coffee into software.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 20.09.08 14:49 
user profile iconXentar hat folgendes geschrieben:
user profile iconYogu hat folgendes geschrieben:
Ein array of Byte belegt aber viermal so viel Speicher wie ein String.

Windows reserviert für ein einzelnes Byte 4 Byte Speicher - 32 Bit, also ein Integer. Das ändert sich auch bei einem Array nicht - du hast dann ein array of Integer, bei dem immer nur ein viertel belegt wird. Nicht schön.


Äh, war das nicht so, dass auf das nächste vielfache von 4 aufgerundet wird?
Wenn das array of byte also z.B. die Größe 30 hat, dass dafür dann 32 Byte Speicher reserviert werden?
Wär doch Schwachsinn, wenn dafür 120 Byte reserviert werden.

Ganz sicher bin ich mir nicht, aber ich glaube schon. Da müssten wir einen Experten fragen.