[Code] [Delphi] Dateien im Projekt "einbinden"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Prrovoss, 12. Februar 2010 .

  1. 12. Februar 2010
    [Delphi] Dateien im Projekt "einbinden"

    hi,
    ich hab dazu bis jetzt nichts hilfreiches gefunden...
    gibt es eine möglichkeit eine oder mehrere dateien im delphi-projekt "einzubinden"?
    dh. man hat eine kleine anwendung die man mit in das delphi projekt packt und wenn sie gebraucht wird dann entpackt man sie sozusagen und kann dann auf sie zugreifen.
    in meinem fall würde ich sie dann mit einer batchdatei ansteuern die ich mich delphi erzeuge. also sollte die "entpackte" anwendung im gleichen ordner erscheinen wie die delphi-anwendung.
    gibts es sowas in der art?^^
     
  2. 12. Februar 2010
    AW: [Delphi] Dateien im Projekt "einbinden"

    Inside the (Delphi) EXE - Storing Resource (WAV, MP3, ) into Delphi Executables - Create .RC/.RES

    google delphi resources..
     
  3. 12. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: [Delphi] Dateien im Projekt "einbinden"

    Du kannst Daten als Ressourcen in deine Anwendung mit "einpacken" und anschliessend mit "Delphi"-Befehlen benutzen. Um Benutzerdefinierte-Daten als Ressourcen zu benutzen wirst du um die WinAPI nicht drum herum kommen.

    Hier wurde schon bereits ein Tutorial gepostet wie du in Delphi Daten als Resourcen mit in die Anwendung packen kannst. Zusätzlich bzw. Nachträglich kannst du auch Daten mit dem Resource Hacker in die Anwendung packen.

    Hier noch ein Link zur WinAPI mit allen benötigten Funktionen die du zum Auslesen dafür brauchst:
    Functions

    Mfg Rushh0ur
     
  4. 12. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    AW: [Delphi] Dateien im Projekt "einbinden"

    ok thx hab mir ma das tut angeguckt aber aber was für einen dateityp nehme ich bei einer anwendung? ich habs mit "EXECUTABLE" versucht aber da hat er mir nen fehler ausgegeben.
     
  5. 12. Februar 2010
    AW: [Delphi] Dateien im Projekt "einbinden"

    Hab jetzt leider kein RES- Compiler installiert mit dem ich das Prüfen könnte aber ich glaube Benutzerdefinierte Typen müssen ebenfalls in Anführungszeichen gesetzt werden:
    APP "EXE" "Dateipfad"

    Vodefinerte Typen findest du hier die werden halt nicht in Anführungszeichen angegeben:
    Resource-Definition Statements (Windows) (könnte man ins Tutorial übernehmen)

    Ich schau mal ob ich nen RES-Compiler finde, dann kann ich es dir genau sagen.
    //Edit:
    Ne doch nicht benutz die BRCC32.EXE mit der geht es bei mir.

    PS: Es ist im Prinzip egal was es für ein Typ ist, wenn du die Daten extrahierst, musst du sowieso eine neue Datei anlegen und die Daten in diese reinschreiben, dabei kannst du die Dateiendung ja festlegen.

    Mfg Rushh0ur
     
  6. 12. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: [Delphi] Dateien im Projekt "einbinden"

    ok thx, ich hab mri jetzt auch nen res compiler geladen udn damit ging es auch.
    ich habe jetzt also die res datei und und hab sie auch schon in delphi eingebunden

    aus dem tut das dreamax gepostet hat hab ich folgendes genommen:

    Code:
    procedure TForm1.Button2Click(Sender: TObject) ;
    var
     rStream: TResourceStream;
     fStream: TFileStream;
     fname: string;
    begin
    
     fname := ExtractFileDir(Paramstr(0))+'deveject.exe';
     rStream := TResourceStream.Create(hInstance, 'deveject', RT_RCDATA) ;
     try
     fStream := TFileStream.Create(fname, fmCreate) ;
     try
     fStream.CopyFrom(rStream, 0) ;
     finally
     fStream.Free;
     end;
     finally
     rStream.Free;
     end;
    end;
    ungefähr so siehts jetzt bei mir im code aus.

    ich kriege aber immer diesen fehler:

    Bild
     
  7. 13. Februar 2010
    AW: [Delphi] Dateien im Projekt "einbinden"

    ok so hats jetzt geklappt:

    Code:
    FUNCTION tform1.DateiExtrahiertOderExistiert(ResTyp, ResName, ResZielName : STRING) : BOOLEAN;
    VAR Res : TResourceStream;
    BEGIN
     IF NOT FileExists(ResZielName) THEN BEGIN
     Res := TResourceStream.Create(Hinstance, ResName, PChar(ResTyp));
     TRY
     Res.SavetoFile(ResZielName);
     IF FileExists(ResZielName) THEN Result := True
     ELSE Result := False;
     FINALLY
     Res.Free;
     END;
     END
     ELSE Result := True;
    END;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
    BEGIN
     IF DateiExtrahiertOderExistiert('EXEFILE', 'deveject', ExtractFilePath(ParamStr(0)) + 'deveject.exe') THEN BEGIN
     Application.ProcessMessages;
     END;
    END;
     
  8. 13. Februar 2010
    AW: [Delphi] Dateien im Projekt "einbinden"

    //Edit: Ok, zu Spät ^^

    Code:
    fname := ExtractFileDir(Paramstr(0))+'[B]\[/B]myapp.exe';
    rStream := TResourceStream.Create(hInstance, [B]'MYAPP',[/B] [B]'DEINTYP'[/B]) ;
    Die RC Datei hast du nehme ich mal an richtig erstellt und die RES-Datei richtig eingebunden:

    Mfg Rushh0ur
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.