AGB  ·  Datenschutz  ·  Impressum  







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

Prozess Dumpen

Ein Thema von _rEdoX · begonnen am 2. Jun 2006 · letzter Beitrag vom 2. Jun 2006
 
Benutzerbild von himitsu
himitsu
Online

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

Re: Prozess Dumpen

  Alt 2. Jun 2006, 17:45
Aber an Grundlagen fehlt es dennoch etwas

setlength(aob, high(aob) + 2); entspricht
setlength(aob, (length(aob) - 1) + 2);

HIGH ruft LENGTH auf und zieht (bei len>0 ?? oder prüft es garnicht ... bin mir gerade nicht ganz sicher) eins ab.


setlength(aob, length(aob) + 1); ich hoffe es geht jetzt nicht zu schnell:
Delphi-Quellcode:
while FromAddress < ToAddress do
  begin
    setlength(aob, length(aob) + 1);
    aob[high(aob)] := pByte(FromAddress)^;
    inc(FromAddress, 1);
  end;
Delphi-Quellcode:
while FromAddress < ToAddress do
  begin
    i := length(aob)
    setlength(aob, i + 1);
    aob[i] := pByte(FromAddress)^;
    inc(FromAddress, 1);
  end;
Delphi-Quellcode:
for i2 := FromAddress to ToAddress - 1 do
  begin
    i := length(aob)
    setlength(aob, i + 1);
    aob[i] := pByte(i2)^;
  end;
Delphi-Quellcode:
setlength(aob, ToAddress - FromAddress - 1);
for i := 0 to high(aob) do
  aob[i] := pByte(i + FromAddress)^;
Delphi-Quellcode:
setlength(aob, ToAddress - FromAddress - 1);
CopyMem(FromAddress^, aob[0], length(aob);
1. weißt du, wie oft SETLENGTH aufgerufen wird? (für jedes Byte der Datei einmal ... nicht gerade effizient.

2. und warum jedes byte einzeln auslesen?
(Integer, statt byte järe ja schon effizienter gewesen, vorallem weil es den bus/die register besser ausnutzt ... oder halt gleich alles auf einmal)

selbst wenn du jedes Byte einzeln auslesen willst ... SETLENGTH hättest du dennoch vorher setzten können.
Du weißt doch schließlich schon vorher wie groß es werden wird. (ToAddress - FromAddress - 1);

3. aber warum willst du deine eigene EXE kopieren (notfalls ließ es doch direkt aus der Datei, da fängt der Inhalt immer bei null an und der Anfang muß nicht erst gesucht werden)

4. laß ich jetzt lieber

5. außerdem klingt ToAddress irgendwie falsch, denn nach deinem AusgangsCode ist es nicht das letzte Byte, welches gelesen wird, sondern das Byte danach.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 20:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz