| Autor |
Beitrag |
Ardos
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 19.09.08 20:06
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 Narses: Delphi-Tags hinzugefügt
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Fr 19.09.08 20:11
Ardos hat folgendes geschrieben: | 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 19.09.08 20:15
Moin und  im Forum!
Ardos 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? So geht´s mit einem String.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Ardos 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 19.09.08 20:16
Hm ja ist klar aber es geht trotzdem nicht, finally try und end ändern daran nichts oder?
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 19.09.08 20:21
ja danke string funktioniert muss ichs halt damit machen
|
|
Bergmann89
      
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)
|
Verfasst: Sa 20.09.08 00:48
Moin,
Xentar 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:
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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Sa 20.09.08 13:48
Yogu 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
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 20.09.08 14:49
Xentar hat folgendes geschrieben: | Yogu 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.
|
|