AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei in ein Bytearray einlesen

Ein Thema von Linguini · begonnen am 20. Mai 2009 · letzter Beitrag vom 21. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23      
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#1

Datei in ein Bytearray einlesen

  Alt 20. Mai 2009, 21:33
Hi,

eine ganz kurze Frage

Wie kann ich eine Datei in ein Byte Array (TByteArr = Array of Byte) einlesen?

Ich bräuchte nur einen kleinen Schubs in die richtige Richtung der verwendeten Unit/Funktion.

Danke

Linguini
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Datei in ein Bytearray einlesen

  Alt 20. Mai 2009, 21:36
reicht das schon als Schups?
FileStream.Read(MyByteArray[0], Length(MyByteArray));
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#3

Re: Datei in ein Bytearray einlesen

  Alt 20. Mai 2009, 22:28
Falls ne, dann *tritt,fg*:

Delphi-Quellcode:
type TByteArr = Array of Byte;

function ReadIn( const Filename: String ): TByteArr;
var
  f: File of Byte;
  Err: String;
begin
  if not FileExists(Filename) then
    Exit;
  {$i-}
  AssignFile( F, Filename );
  Reset( F );
  SetLength( Result, FileSize(F) );
  BlockRead( F, Result[0], Length(Result) );
  CloseFile( F );
  {i-}
  Err := SysErrorMessage( IOResult );
  if Err <> 0 then
    MessageBoxA( Handle, pChar( 'Error [' + IntToStr(IOResult) + ']'#13#10#13#10+Err ),
      'Error', MB_OK or MB_ICONERROR );
end;
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#4

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 10:01
Es will leider immer noch nicht funktionieren =/

Ich versuche den Entrypoint eines Programmes herauszufinden, dazu benutze ich die Unit aus diesem Anhang.

EntryPoint := PeUtils.GetEntryPoint(); Zwischen den Klammern will der ein : FileData:TByteArr; var P: TParameters


Ich dachte ich mach das einfach mit:
PeUtils.GetEntryPoint(ReadIn(FileName)) Nur leider will das auch nicht...

[DCC Fehler] MeinProgramm.pas(3285): E2010 Inkompatible Typen: 'PEUtils.TByteArr' und 'MeinProgramm.TByteArr'

Linguini
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 10:36
Liegt einfach nur daran das TByteArray an 2 verschiedenen Stellen definiert ist. Selbst wenn sie exakt gleich definiert sind bekommst du diese Meldung.
Warum hast du es eigentlich doppelt definiert? Wenn es bereits in PEUtils definiert ist, ist es doch überflüssig es noch einmal zu definieren.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#6

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 10:59
Frag ich mich auch...


Delphi-Quellcode:
 _File : TByteArr;

_File := ReadIn(fileName);

PEUtils.GetEntryPoint(@_File,P) ;

Code:
 FileData:TByteArr; var P: TParameters
Wie muss ich den 2. Übergabewert also P: Tparameters definieren?
Der 1. also FileData sollte jetzt ja stimmen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 11:04
seit wann gibt es eigentlich
Delphi-Quellcode:
// Types.pas
TByteDynArray = array of Byte;
und warum nicht gleich überall dieses verwenden?

[add]
na genauso wie es dasteht?
Delphi-Quellcode:
var _File: TByteArr;
  P: TParameters;

_File := ReadIn(FileName);
PEUtils.GetEntryPoint(_File, P);
// bzw.:
PEUtils.GetEntryPoint(ReadIn(FileName), P);
ist in GetEntryPoint FileData wirklich als Pointer definiert (sieht nicht so aus)
und wenn nicht, warum dann @_File?
$2B or not $2B
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#8

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 11:28
Delphi-Quellcode:
  _File : TByteArr;
  P: TParameters;


PEUtils.GetEntryPoint(ReadIn(fileName), P) ;
Prozedur:

Delphi-Quellcode:
procedure GetEntryPoint( FileData: TByteArr; var P: TParameters );
begin
  P.EntryPoint := PCardinal( @FileData[P.PE_Offset+$28] )^;
end;
Leider enthalte ich damit immer bei "P.EntryPoint := PCardinal( @FileData[P.PE_Offset+$28] )^;" eine Exception:

Code:
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 00476ED9 in Modul 'PhosGenPro.exe'. Lesen von Adresse FF930040'. Prozess PhosGenPro.exe (1488)
Irgendwo ist noch der Wurm drin...
In "fileName" liegt der Pfad zu der Datei. ReadIn ist die Prozedur, die mr_emre_d in diesem Thread bereits gepostet hat.

Danke für eure super Hilfe bisher =)
  Mit Zitat antworten Zitat
Linguini

Registriert seit: 19. Mai 2009
95 Beiträge
 
#9

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 12:18
Es darf auch gerne jemand Alternativen vorschlagen, um den EntryPoint und die ImageBase herauszufinden, falls es welche gibt^^

@Problem

Vielleicht gibt es ein Problem mit der ReadIn Prozedur?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Datei in ein Bytearray einlesen

  Alt 21. Mai 2009, 12:22
@Linguini: Bitte unterlasse zukünftig das pushen innerhalb von 24 Stunden
2.3.2.4 - In der Ruhe liegt die Kraft: Kein "Pushen" von Beiträgen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz