Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Nero NRG Datei in ISO Konvertieren (https://www.delphipraxis.net/134370-nero-nrg-datei-iso-konvertieren.html)

daniel-h 20. Mai 2009 18:59


Nero NRG Datei in ISO Konvertieren
 
hallo,
ich habe so einige nrg images auf meinem PC. Nun möchte ich diese ins iso Format konvertieren.
Da dachte ich an was selbst programmiertes.
Aber ich weiss nicht, wo ich anfangen soll.
Wäre nett, wenn ihr mir bei dem Algorythmus helfen könntet.

mfg Daniel

uwewo 20. Mai 2009 19:31

Re: Nero NRG Datei in ISO Konvertieren
 
Hi,

schau mal hier

daniel-h 20. Mai 2009 20:03

Re: Nero NRG Datei in ISO Konvertieren
 
ich habe auch nochmal gegoogelt.
dabei bin ich auf diese procedure gestoßen:

Delphi-Quellcode:
var
  src, dst: Integer;
  buf: Pointer;
  n, bytes, bytestocopy: Integer;
  lastpart: array [0..4] of Integer;
begin
  if Tag = 0 then
    begin
      Tag := 1;
      cancel := False;
      Button1.Enabled := False; Button2.Enabled := False; Button4.Enabled := False;
      Button3.Caption := '&Abbrechen';
      src := INVALID_HANDLE_VALUE;
      dst := INVALID_HANDLE_VALUE;
      try
        GetMem(buf, 1 shl 20); // 1 Megabyte
        src := CreateFile(PChar(Edit1.Text), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
        if (src = INVALID_HANDLE_VALUE) then
          raise EInOutError.Create('Datei nicht gefunden');
        dst := CreateFile(PChar(Edit2.Text), GENERIC_WRITE, FILE_SHARE_READ, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
        if (dst = INVALID_HANDLE_VALUE) then
          raise EInOutError.Create('Fehler beim Erzeugen der Datei');
        bytestocopy := SetFilePointer(src, 0, nil, FILE_END);
        SetFilePointer(src, -sizeof(lastpart), nil, FILE_END);
        if (not ReadFile(src, lastpart, sizeof(lastpart), n, nil)) then
          raise EInOutError.Create('Datei zu kurz');
        if (((lastpart[0] = $21444E45) and
             (lastpart[2] = $3552454E)) or
            ((lastpart[1] = $21444E45) and
             (lastpart[3] = $4F52454E))) then
          begin
            bytestocopy := lastpart[4];
            asm
              mov eax, bytestocopy
              xchg ah, al
              rol eax, 16
              xchg ah, al
              mov bytestocopy, eax
            end;
          end;
        Dec(bytestocopy, 512*600);
 // fehler1     if (SetFilePointer(src, 512*600, nil, FILE_BEGIN) = -1) then
          raise EInOutError.Create('Datei zu kurz');
        while (bytestocopy > 0) do
          begin
            bytes := bytestocopy;
            if (bytes > 1 shl 20) then
              bytes := 1 shl 20;
 //fehler2         if (not ReadFile(src, buf^, bytes, n, nil)) then
              raise EInOutError.Create('Fehler beim Lesen');
            if n = 0 then
              break;
            Dec(bytestocopy, n);
            if cancel then
              break;
 //fehler3         if (not WriteFile(dst, buf^, n, n, nil)) then
              raise EInOutError.Create('Fehler beim Schreiben');
            Label1.Caption := Format('%d Bytes kopiert', [SetFilePointer(src, 0, nil, FILE_CURRENT)]);
            Label1.Update;
            Application.ProcessMessages;
          end;
        Label1.Caption := 'fertig.';
      except
        on e: EInOutError do
          Label1.Caption := 'Fehler: ' + e.Message;
      end;
      CloseHandle(src);
      CloseHandle(dst);
      Button3.Caption := '&Konvertieren';
      Button1.Enabled := True; Button2.Enabled := True; Button4.Enabled := True;
      Tag := 0;
    end
  else
    cancel := True;
aber ich kann das nicht kompilieren da kommen 3 fehler:

[Pascal Fehler] Unit1.pas(81): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Pascal Fehler] Unit1.pas(105): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Pascal Fehler] Unit1.pas(112): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

Ace 21. Mai 2009 08:41

Re: Nero NRG Datei in ISO Konvertieren
 
Da gibts doch haufenweise was: http://www.google.de/search?q=nrg2iso
Und wenn du ungedinngt was selber programmieren willst könntest du ja auch einen der Konsolen-Konverter nehmen und eine GUI dafür bauen.

jaenicke 21. Mai 2009 08:53

Re: Nero NRG Datei in ISO Konvertieren
 
Zitat:

Zitat von daniel-h
[Pascal Fehler] Unit1.pas(81): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Pascal Fehler] Unit1.pas(105): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
[Pascal Fehler] Unit1.pas(112): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

Also bei der ersten Zeile sehe ich so auf Anhieb kein Problem, aber bei den beiden anderen stimmen die Parameter ja auch nicht überein. Denn du hast den variablen Parameter n als Integer statt Cardinal deklariert.

Satty67 21. Mai 2009 09:52

Re: Nero NRG Datei in ISO Konvertieren
 
Besser n gleich als DWord.

Der Quellcode ist scheinbar Delphi3, zumindest wird auf der Quellhomepage auch noch die vcl30 angeboten :stupid:

daniel-h 21. Mai 2009 10:03

Re: Nero NRG Datei in ISO Konvertieren
 
ich hab es jetzt nochmal probiert, kompilieren kann ich das jetzt auch aber ich glaube da ist ein logischer fehler drin.
die konvertierten isos sind dann schrott.
benutze jetzt isobuster, funzt super, kann die kaputten iso sogar wieder heile machen :stupid:
aber dann geht das sofort mit isobuster schneller.

Satty67 21. Mai 2009 10:07

Re: Nero NRG Datei in ISO Konvertieren
 
Also eben eine DatenCD mit NeroExpress als NRG gespeichert und mit der Routine als ISO konvertiert. Sowohl 7zip als auch VirtualPC konnten die ISO lesen.

Aber das Audio-CD nicht gehen, steht auf der Homepage... und evtl. nicht alle Versionen von NRG?

daniel-h 21. Mai 2009 10:11

Re: Nero NRG Datei in ISO Konvertieren
 
also isobuster sagt mir, dass der udf baum fehlen würde.
ich brauch die dateien ja im iso format, da ich sie patchen muss.
das programm fängt auch an zu mucken :|

DP-Maintenance 22. Mai 2009 15:34

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "VCL / WinForms / Controls" nach "Programmieren allgemein" verschoben.
Das hat nix mit VCL zu tun


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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