AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie, um den Code zu übersetzen C + + bis Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Wie, um den Code zu übersetzen C + + bis Delphi

Ein Thema von SlpLow · begonnen am 4. Nov 2013 · letzter Beitrag vom 5. Nov 2013
Antwort Antwort
SlpLow

Registriert seit: 4. Nov 2013
28 Beiträge
 
#1

AW: Wie, um den Code zu übersetzen C + + bis Delphi

  Alt 5. Nov 2013, 01:35
Danke! In jedem Fall zeigt Müll ...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  created: DWORD = 1;
var
  WimHandle: THandle;
  Size: Integer;
  Buffer: PChar;
  Pot: PDWORD;
begin
  WimHandle := WIMCreateFile
    (PWideChar('e:\TestWim\x86\sources\boot.wim'),
    WIM_GENERIC_READ, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE,
    WIM_COMPRESS_XPRESS, @created);
  Size := 10000;
  GetMem(Buffer, Size);
  Pot := @Size;

  if WIMGetImageInformation(WimHandle, Buffer, Pot) Then
  begin
  Memo1.Lines.Add(Buffer);
// Memo1.Text := String(Buffer);;
  end;
  FreeAndNil(Buffer);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Wie, um den Code zu übersetzen C + + bis Delphi

  Alt 5. Nov 2013, 02:30
Welche Delphi-Version nutzt du?
(vor D2009 muß es "Müll" liefern, da dein Buffer dort PAnsiChar wäre)

pdwCreationResult ist ein Out-Parameter.
Wieso wird da eine Konstante reingegeben?

Und hast du nachgesehn was dein Code macht?
- was steht in WimHandle
- was in created
- und was in Pot (nach WIMGetImageInformation)

Zitat von WIMCreateFile und WIMGetImageInformation:
If the function fails, the return value is NULL. To obtain extended error information, call the GetLastError function
[add]
http://msdn.microsoft.com/en-us/libr.../dd834949.aspx
Lies mal bitte die Beschreibung von ppvImageInfo und den letzten Satz von Remarks.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Nov 2013 um 02:36 Uhr)
  Mit Zitat antworten Zitat
SlpLow

Registriert seit: 4. Nov 2013
28 Beiträge
 
#3

AW: Wie, um den Code zu übersetzen C + + bis Delphi

  Alt 5. Nov 2013, 03:05
Es tut mir leid. Unbequeme zu übersetzen und zu antworten - ich verstehe Ihre Frage, und ich werde nach der Überprüfung den Code zu beantworten.
  Mit Zitat antworten Zitat
SlpLow

Registriert seit: 4. Nov 2013
28 Beiträge
 
#4

AW: Wie, um den Code zu übersetzen C + + bis Delphi

  Alt 5. Nov 2013, 05:22
1. Müll entfernt, aber wenn du jetzt gehst FreeMem(Buffer), wirft es auf einen Fehler - invalid pointer operation, plus einen Speicherverlust.
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses WIMGAPI;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  created: DWORD = 1;
var
  FileHandle: THandle;
  dwError: DWORD;
  Size: Integer;
  Buffer: PWideChar;
  Pot: PDWORD;
begin
  InitWIMGAPI;
  FileHandle := WIMCreateFile
    (PWideChar('d:\Wim_Image\x86\sources\install.wim'),
    WIM_GENERIC_READ, WIM_OPEN_EXISTING, WIM_FLAG_SHARE_WRITE,
    WIM_COMPRESS_XPRESS, 0);

  if (FileHandle = 0) then
  begin
    dwError := GetLastError;
    ShowMessage('Error Open ' + IntToStr(GetLastError));
    Exit;
  end
  else
  begin
    Size := 10000;
    GetMem(Buffer, Size);
    Pot := @Size;
    Memo1.Clear;
    if (not WIMGetImageInformation(FileHandle, @Buffer, Pot)) Then
    begin
      dwError := GetLastError;
      ShowMessage('Error Info ' + IntToStr(GetLastError));
      Exit;
    end
    else
    begin
      Memo1.Lines.Add(Buffer);
      WIMCloseHandle(FileHandle);
      FreeMem(Buffer); //invalid pointer operation
    end;
  end;
end;

end.
2. Wie schnell und schön zu analysieren Daten auf alle Bilder
* und ziehen in Memo?
<NAME>Windows 7 HOMEBASIC</NAME> = Windows 7 HOMEBASIC;
<NAME>Windows 7 ULTIMATE</NAME> = Windows 7 ULTIMATE;

Geändert von SlpLow ( 5. Nov 2013 um 05:44 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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: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