[delphi] uit een olecontainer iets kopieëren

Pagina: 1
Acties:

  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Hoe kun je een bestand, dat in een olecontainer zit, naar een plek op de HD kopieëren?


Keine vraag, maar bvb dank

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 17-08 12:12

Killemov

Ik zoek nog een mooi icooi =)

Ja, dat kan. En dan moet je zeker diep in de OLE-componenten duiken.

Hey ... maar dan heb je ook wat!


  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Hmz, maar ik heb geen idee waar ik dat kan vinden. Heb 3 jaar op Google gezocht, en hier op GOT was ookal niets te vinden...


Kan iemand mij helpen?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Op woensdag 10 juli 2002 14:47 schreef oikoyama het volgende:
Hmz, maar ik heb geen idee waar ik dat kan vinden. Heb 3 jaar op Google gezocht, en hier op GOT was ookal niets te vinden...


Kan iemand mij helpen?
OLE Container in Delphi? En hoe komt het bestand er dan in?

Heb je in google in de usenet newsgroups gezocht? Probeer anders eens http:\\www.tamaracka.com. Die heeft net als google (dejanews) een archief van de usenet newsgroups. Deze vind ik alleen iets makkelijker te gebruiken en heeft alleen Borland en/of Microsoft related newsgroups.

We adore chaos because we like to restore order - M.C. Escher


  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
OLE Container in Delphi? En hoe komt het bestand er dan in?
Dit zit standaard in Delphi 6. En je kunt er een bestand in zetten door er met de rechtermuisknop op te klikken en dan toevoegen te kiezen.
Zo zit er een programma in het programma verstopt.

Nu wil ik dus de inhoud kopieëren naar de HD.

Is er geen paste mogelijkheid?

  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

Op woensdag 10 juli 2002 18:58 schreef oikoyama het volgende:

[..]

Dit zit standaard in Delphi 6. En je kunt er een bestand in zetten door er met de rechtermuisknop op te klikken en dan toevoegen te kiezen.
Zo zit er een programma in het programma verstopt.

Nu wil ik dus de inhoud kopieëren naar de HD.

Is er geen paste mogelijkheid?
een programma in een programma ==> klinkt als virus :? ;)

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


  • bgever
  • Registratie: April 2002
  • Laatst online: 28-05-2021
Nou, klinkt meer als een installer. Maar ok, virus kan, maar ik MAAK liever iets, dan dat ik het mol.

Het wordt dus een installer die een file(s) naar de HD copyt.

Simpel niet? Of heeft iemand een ander idee hoe ik dat kan maken? Een installer met alles in één .exe?

Verwijderd

InnoSetup

Freeware, incl. Delphi source, en 't ding kan akelig veel.

En wanneer je 't zelf wilt schrijven, dan is deze link misschien wel handig. Een uitleg over hoe je (design time) bestanden op kan slaan in een resource file en hoe je daar later (runtime) weer bij kan.

TOleContainer is hier misschien wel voor te misbruiken, maar is hier niet voor bedoeld: "TOleContainer embeds or links OLE objects.".
Wil je hieruit de kale bestanden halen, dan zul je vrij diep in Delphi's streaming mechanisme moeten duiken ben ik bang, en dan is misschien die resource file oplossing of een eigen object wel wat handiger.

Op m'n werk gebruiken we ook nog een oud freeware component die een file in je DFM kan opslaan, eventueel zelfs nog met een simpele LZH compressie, maar ik kan even niet op de naam komen...

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Op woensdag 10 juli 2002 19:26 schreef oikoyama het volgende:
Nou, klinkt meer als een installer. Maar ok, virus kan, maar ik MAAK liever iets, dan dat ik het mol.

Het wordt dus een installer die een file(s) naar de HD copyt.

Simpel niet? Of heeft iemand een ander idee hoe ik dat kan maken? Een installer met alles in één .exe?
Een OLE container is daar absolut niet voor bedoelt. Het is bedoelt als je bijvoorbeeld een word document wilt bewerken in je eigen delphi programma (met Word als OLE container). Bij Word kan je kiezen voor een bestand in te voegen in je document, dat is hezelfde.

Voor een installer zou ik hele andere dingen gebruiken. Zoals compressed file streams enzo. Maar zoals al eerder werd gezegt: Waarom gebruik je geen Inno Setup? Het is open-source en geschreven in Delphi!

We adore chaos because we like to restore order - M.C. Escher


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20:41

Tomatoman

Fulltime prutser

Je kunt ook InstallShield Express gebruiken, dat wordt meegeleverd met de Professional en Enterprise (= Client/Server) versies van Delphi.

Waarom zou je zelf een installatieprogramma willen maken als daar als gespecialiseerde toepassingen voor bestaan? Als je echt iets wilt installeren op een nette manier, moet je ook een unistaller meeleveren, versiecontrole uitvoeren als je DLL's wilt vervangen, reference counters in het register bijwerken en nog een heleboel meer. Dat doe je niet zomaar even.

Een goede grap mag vrienden kosten.


Verwijderd

Op donderdag 11 juli 2002 12:50 schreef tomatoman het volgende:
Je kunt ook InstallShield Express gebruiken, dat wordt meegeleverd met de Professional en Enterprise (= Client/Server) versies van Delphi.

Waarom zou je zelf een installatieprogramma willen maken als daar als gespecialiseerde toepassingen voor bestaan? Als je echt iets wilt installeren op een nette manier, moet je ook een unistaller meeleveren, versiecontrole uitvoeren als je DLL's wilt vervangen, reference counters in het register bijwerken en nog een heleboel meer. Dat doe je niet zomaar even.
Tja, ik hou graag van het onmogelijke. Proberen is altijd de moeite waard. Maar bedankt voor jullie reacties. Hier kom ik tenminste verder mee. Ik bekijk die tuto even, en kijk dan nog wat ik doe...

Bedankt allemaal!

Verwijderd

Op donderdag 11 juli 2002 17:29 schreef joepselen het volgende:

[..]

Tja, ik hou graag van het onmogelijke. Proberen is altijd de moeite waard. Maar bedankt voor jullie reacties. Hier kom ik tenminste verder mee. Ik bekijk die tuto even, en kijk dan nog wat ik doe...

Bedankt allemaal!
(dit is Oikoyama trwns, ben per ongeluk ingelogd op een andere computer... :7)

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 20:41

Tomatoman

Fulltime prutser

Misschien is dit wat je zoekt. Een bestand (in de code een DLL genaamd MIDAS.DLL) is meegecompileerd in de executable in de vorm van een resource. De code in de executable kopieert de resource naar een tijdelijk bestand op de harddisk en voilà, daar is je DLL weer.

bestand midas.rc:
code:
1
MIDAS RCDATA .\MIDAS.DLL

De RC file moet je compileren met de volgende batchfile.

bestand MidasCompileren.bat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
echo This batch file compiles the midas.rc file. The output file is called midas.RES.
echo.
echo The Borland Resource Compiler brcc32.exe must be on the search path. The file
echo MIDAS.DLL is used as a resource and must be in the same directory as this batch
echo file.
echo.
echo.

brcc32 midas.rc

echo.

pause

Nu nog de resource in je executable compileren en de code voor het extracten erbij. Het bestand wordt in de TEMP directory opgeslagen en krijgt een naam die lijkt op ~MID0000.tmp.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
unit InstallMidas;

interface

...

implementation

{$R *.DFM}
{$R midas.RES}

function TMidasInstallForm.ExtractMidas: TFileName;
var
  ResStream: TResourceStream;
  Buff, TempFile: array[0..MAX_PATH] of Char;
begin
  try
    ResStream := TResourceStream.Create(HInstance, 'MIDAS', RT_RCDATA);
    try
    if GetTempPath(SizeOf(Buff), Buff) = 0 then
      raise EAbort.Create('');
    if GetTempFileName(Buff, 'MID', 0, TempFile) = 0 then
      raise EAbort.Create('');
    ResStream.SaveToFile(TempFile);
    Result := TempFile;
    finally
    ResStream.Free;
    end;
  except
    Result := '';
  end;
end;

Een goede grap mag vrienden kosten.


Verwijderd

Ah, thnx, ik zal het uitproberen...
Pagina: 1