Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[Delphi] bestand vanaf cdrom laden

None
11 antwoorden
  • ik wil een exe bestand maken met delphi. ik wil dat op een cd zetten samen met een ander bestand. het programma moet het oproepen. het probleem is dat mijn cd-drive op q: zit dat dat is vast niet zo bij iedereen. hoe kan ik naar universeel "een cdromspeler" verwijzen? iets zoals:
    %cdromspeler%\bestand.html

    BVD
  • het is wel zo bij %systemroot%
    dat gaat automatis naar winnt of windows ofzo
  • [quote:720db1f3de="hugovis"]ik wil een exe bestand maken met delphi. ik wil dat op een cd zetten samen met een ander bestand. het programma moet het oproepen. het probleem is dat mijn cd-drive op q: zit dat dat is vast niet zo bij iedereen.
    [/quote:720db1f3de]
    Je hebt gelijk! 8)
    [quote:720db1f3de]
    hoe kan ik naar universeel "een cdromspeler" verwijzen? iets zoals:
    %cdromspeler%\bestand.html
    [/quote:720db1f3de]
    Nee, ik herformuleer je vraag ff voor je:
    "Hoe kan ik ervoor zorgen dat mijn Delphi applicatie altijd dat bestand kan openen ongeacht locatie van mijn applicatie en bestand.html?"

    Aangenomen dat je applicatie en bestand.html in dezelfde directory staan, kun je het volgende doen:
    [code:1:720db1f3de]
    uses SysUtils, …


    var
    MijnBestand: string;
    begin
    MijnBestand := ExtractFilePath(ParamStr(0)) + 'bestand.html';
    end;
    [/code:1:720db1f3de]
  • Of:

    [code:1:2d011f8c85]
    var
    MijnBestand: string;
    begin
    MijnBestand := ExtractFileDir(Application.ExeName)+'\bestand.html';
    end;
    [/code:1:2d011f8c85]
    Misschien iets moeilijker maar ik gebruik het zo altijd.
  • Bedankt voor de tips. Ik had op een andere site ook nog gevonden dat het op de volgende manier kan:
    [code:1:3b217df189]
    procedure TVakantie.DagboekClick(Sender: TObject);
    procedure OpenObject( sObjectPath : string );
    begin
    ShellExecute( 0, Nil, PChar( sObjectPath ),
    Nil, Nil, SW_NORMAL );
    end;

    begin
    OpenObject('bestand.html');
    end;
    [/code:1:3b217df189]
    Het werkt nu ook als je het bestand vanuit een cd-rom wil laden.
  • Dan open je het bestand in het gekoppelde programma, meestal in de Internet Explorer… maar dan weet je nog niet waar het staat :-? je kan wel gewoon "bestand.html" (of ".\bestand.html") doen, dan ga je er dus vanuit dat het programma zoekt in de map waar de exe-file staat.
  • Ja, dat is ook de bedoeling. Het .exe-bestand en de html staan in dezelfde map. Is dit niet zo, dan kan je bv 'map/bestand.html' doen. Dan opent ie dat bestand in die map.
  • Oh oke, ik had niet begrepen dat je het bestand wou openen.
  • [quote:d4e6e91278="hugovis"]Bedankt voor de tips. Ik had op een andere site ook nog gevonden dat het op de volgende manier kan:
    [code:1:d4e6e91278]
    procedure TVakantie.DagboekClick(Sender: TObject);
    procedure OpenObject( sObjectPath : string );
    begin
    ShellExecute( 0, Nil, PChar( sObjectPath ),
    Nil, Nil, SW_NORMAL );
    end;

    begin
    OpenObject('bestand.html');
    end;
    [/code:1:d4e6e91278]
    Het werkt nu ook als je het bestand vanuit een cd-rom wil laden.[/quote:d4e6e91278]
    Dit kan fout gaan. Je moet altijd het volledig pad opgeven.

    Dus dan zou je gecombineerd met eerdere code het volgende kunnen doen:

    [code:1:d4e6e91278]
    uses SysUtils, …


    Private Declarations
    ExePath: String;


    procedure OpenObject(sObjectPath: String);
    begin
    ShellExecute(0, Nil, PChar(sObjectPath), Nil, Nil, SW_NORMAL );
    end;

    procedure TForm1.OnCreate
    ExePath := ExtractFilePath(Application.ExeName);
    end;

    procedure TVakantieDagBoekClick(Sender: TObject);
    begin
    OpenObject(ExePath + 'bestand.html');
    end;
    [/code:1:d4e6e91278]
  • h4xX0r;
    Ik heb jouw code ertussen gezet, maar hij geeft de volgende melding:

    [Error] Unit1.pas(52): Undeclared identifier: 'OnCreate'

    En Johan;
    misschien had ik mijn vraag niet helemaal goed gesteld.
  • Dat kan ook niet… OnCreate is een event, je moet die code die Haxxor bij OnCreate gezet heeft zelf bij OnCreate zetten.

    Dus dubbelklik op het form en dan plakken.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.