AGB  ·  Datenschutz  ·  Impressum  







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

Malwieder von C nach Delphi

Ein Thema von yörsch · begonnen am 15. Jan 2007 · letzter Beitrag vom 16. Jan 2007
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#3

Re: Malwieder von C nach Delphi

  Alt 15. Jan 2007, 10:44
Hi,
es gibt ein paar Kleinigkeiten, die Du ändern solltest. So ist int nur mindestens 32 Bit groß, sollte aber eigentlich auch in C immer der Standarddatentyp (Integer in Delphi) sein. unsigned und unsigned int solltest Du entsprechend durch Cardinal ersetzen.
Insbesondere gilt dies auch für fFlipVert und fFlipHori, bei den beiden handelt es sich um einen gemeinsamen Datentypen. Du hast also ein Cardinal, das ausreichebd groß ist um beide Variablen zu speichern. Für diese Struktur wird aber wirklich ein komplettes Cardinal verlangt.

Ich denke besser kommst Du hin mit:

Delphi-Quellcode:
type
  TFlag = record
    fFlipVert: Boolean;
    fFlipHori: Boolean;
  end;

  TBoImgDataInfoHeaderFlag = record
    case Integer of
      1: (flag: TFlag);
      2: (c: Cardinal);
  end;

  PBoImgDataInfoHeader = ^TBoImgDataInfoHeader;
  TBoImgDataInfoHeader = record
    iIdent: Cardinal;
    iDataOffset: Cardinal;
    sFlags: TBoImgDataInfoHeaderFlag;
    aStamp: Array[0..63] of Cardinal;
  end;
Hoffe ich lieg jetzt nicht auch völlig daneben.

Was deinen Fehler/Code angeht, Du weißt, dass Du in PBuffer ein Array von Zeigern erzeugst? Die Zeiger sind aber nicht initialisiert. Was genau wird denn im C-Programm hier übergeben? Da es sich um einen Puffer handelt und es offensichtlich um ein Bild geht, solltest du vielleicht einfach ein Array of Byte verwenden (Der Datentyp Char in C entspricht auch dem Byte in Delphi). In C wirst Du statt einem Array von Bytes i.d.R. eher etwas wie (Char* buffer, int bufferSize) finden. Also die Größe wird immer getrennt gespeichert (und gehört nicht direkt zum Array!). C Arrays sind nur Zeiger auf das erste Element und Du springst einfach im Speicher weiter. Du musst dabei selbst schauen, dass Du die Grenzen des Arrays nicht verletzt!

Gruß Der Unwissende
  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 11:09 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