Meu executavel já estar com 72 megas
Estou aqui de novo pedindo ajuda. É o seguinte, o programa que estou criando para trocar o papel de parede do windows já estar com 72 megas 200 imagens JPG em um .RES estou querendo colocar mais 300 Imagens ai o executavel vai ficar maior e que estou querendo COMO faço para colocar estas imagens em outro lugar dentro de um arquivo ZIP ou RAR ou CAB ou ate mesmo uma dll.
No meu projeto as imagens são estraida do exe para a pasta WALLPAPER e depois converteidas para BMP e colocada como plano de Fundo do windows em tempo real que um jeito estrai as imagens deste mesmo jeito que estaio do exe porem de um ZIP ou RAR ou CAB ou DLL.
se alugem poder mi ajudar agradeço...
Cicero
No meu projeto as imagens são estraida do exe para a pasta WALLPAPER e depois converteidas para BMP e colocada como plano de Fundo do windows em tempo real que um jeito estrai as imagens deste mesmo jeito que estaio do exe porem de um ZIP ou RAR ou CAB ou DLL.
se alugem poder mi ajudar agradeço...
Cicero
Cgm2k7
Curtidas 0
Respostas
Steve_narancic
22/09/2007
e porque voce já não deixa as imagens dentro da pasta e não no executavel
GOSTEI 0
Cgm2k7
22/09/2007
e porque voce já não deixa as imagens dentro da pasta e não no executavel
amigo é porque não quero que as imagens fique fora so uma de ca vez
GOSTEI 0
Werlon Goulart
22/09/2007
Mesmo vc colocando em uma DLL o espaço vai continuar sendo ocupado e vc somente terá q levar mais um arquivo na hora de instalar.
Quanto a compactar com o Zip, vc não teria ganhos consideraveis, pois imagens são (no caso de Jpg e outras) compactadas na geração do arquivo.
O melhor a fazer seria diminuir o tamanho das imagens e assim inserir, do jeito q vc achar melhor, na sua aplicação.
A vantagem de guardar as imagens como Recursos dentro do exe, seria a facilidade de instalar, pois seria necessário apenas o Arquivo EXE, sem Dll´s ou arquivos RES.
Se as imagens q vc está utilizando são apenas pra vídeo vc poderia achar um padrão q ficasse legal e que fosse menor...
Quanto as imagens se elas forem BMP, vc teria sim, ganhos com a compactação, pois neste tipo de arquivo a imagem seria mais pura, ou seja, sem nenhum tipo de compactação; ai o uso do Zip poderia ajudar.
Tem um componente pra Delphi 5,6,7.... chamado VCLZip q é muito bom, rápido, cheio de recursos, mas como tudo não pode ser perfeito, é pago.
A versão de Teste funciona apenas com o Delphi aberto.
Grande abraço e espero ter ajudado.
Werlon Goulart
Quanto a compactar com o Zip, vc não teria ganhos consideraveis, pois imagens são (no caso de Jpg e outras) compactadas na geração do arquivo.
O melhor a fazer seria diminuir o tamanho das imagens e assim inserir, do jeito q vc achar melhor, na sua aplicação.
A vantagem de guardar as imagens como Recursos dentro do exe, seria a facilidade de instalar, pois seria necessário apenas o Arquivo EXE, sem Dll´s ou arquivos RES.
Se as imagens q vc está utilizando são apenas pra vídeo vc poderia achar um padrão q ficasse legal e que fosse menor...
Quanto as imagens se elas forem BMP, vc teria sim, ganhos com a compactação, pois neste tipo de arquivo a imagem seria mais pura, ou seja, sem nenhum tipo de compactação; ai o uso do Zip poderia ajudar.
Tem um componente pra Delphi 5,6,7.... chamado VCLZip q é muito bom, rápido, cheio de recursos, mas como tudo não pode ser perfeito, é pago.
A versão de Teste funciona apenas com o Delphi aberto.
Grande abraço e espero ter ajudado.
Werlon Goulart
GOSTEI 0
Cgm2k7
22/09/2007
O poblema não é aquntidade de arquivos ou se vai ou não compactar as imagens, só não quero e que meu exe fique tão grande (96Megas). Só quero uma forma de deixar as imagens gardadas e estrair uma por uma... Se alguem tiver um forma de fazer isto e poder mi ajudar..
GOSTEI 0
Paulo
22/09/2007
Ainda acho que a melhor solução é a do Steve. Não vejo porque guardá-las no exe(Falo no seu caso, pois são muitas). Um exe grande, a carga nele é muito maior, sem contar com o consumo de memória. Num dir aparte, usaria somente espaço em disco e o uso de memória só seria consumido conforme as imgens fossem sendo chamada.
GOSTEI 0
Adriano Santos
22/09/2007
Ainda acho que a melhor solução é a do Steve. Não vejo porque guardá-las no exe(Falo no seu caso, pois são muitas). Um exe grande, a carga nele é muito maior, sem contar com o consumo de memória. Num dir aparte, usaria somente espaço em disco e o uso de memória só seria consumido conforme as imgens fossem sendo chamada.
Nossa...
GOSTEI 0
Cgm2k7
22/09/2007
Masi será se não existe uma maneira de colocar estas imagens dentro deu um arquivo zip e estrailas um por uma??????????????????
GOSTEI 0
Adriano Santos
22/09/2007
Masi será se não existe uma maneira de colocar estas imagens dentro deu um arquivo zip e estrailas um por uma??????????????????
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.
GOSTEI 0
Cgm2k7
22/09/2007
[quote:b53b9b52fb=´Adriano Santos´]
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.[/quote:b53b9b52fb]
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
100 30000000000milhoes de megas como eu disse quero apenas juntar as imagens dentro de um zip ou rar dll ou qualquer outra coisa que faça isto e depois extrai-las um por uma. E sobre a imagens Jpg não dar para compactar já sei disto á 5 anos des de quando aprendi ligar um pc na tomada e não só jpg png gif e muito mais.
Masi será se não existe uma maneira de colocar estas imagens dentro deu um arquivo zip e estrailas um por uma??????????????????
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.[/quote:b53b9b52fb]
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
100 30000000000milhoes de megas como eu disse quero apenas juntar as imagens dentro de um zip ou rar dll ou qualquer outra coisa que faça isto e depois extrai-las um por uma. E sobre a imagens Jpg não dar para compactar já sei disto á 5 anos des de quando aprendi ligar um pc na tomada e não só jpg png gif e muito mais.
GOSTEI 0
Kohl
22/09/2007
O poblema não é aquntidade de arquivos ou se vai ou não compactar as imagens, só não quero e que meu exe fique tão grande (96Megas). .
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
Contraditório nao? Uma hora você diz que quer compactar outra diz que so quer guarda-las todas juntas.
Como foi dito, acredito que a melhor maneira seja colocar elas em um zip, procure na internet sobre como manipular arquivos .zip
GOSTEI 0
Raserafim
22/09/2007
cgm2k7, realmente vc é contraditório no que está querendo e mal educado.
tá vindo com grosseria pra cima da galera, principalmente do Adriano, que tem sempre contribuindo bastante pro fórum.
assim vc não vai consegui muita coisa não.
tá vindo com grosseria pra cima da galera, principalmente do Adriano, que tem sempre contribuindo bastante pro fórum.
assim vc não vai consegui muita coisa não.
GOSTEI 0
Massuda
22/09/2007
Voltando ao problema original... acho que você poderia por as imagens em (provavelmente mais de) uma DLL. Por exemplo, dê uma olhada no exemplo do colega robotizar :arrow: [url=http://forum.devmedia.com.br/viewtopic.php?t=17918]neste tópico[/url].
GOSTEI 0
Cgm2k7
22/09/2007
Ola pessoal primeiramente que pedir desculpas se grosso com eu apenas falei o que penso, dei uma lida em todo o meus topicos e não vi nada de groseria, mas talvez alguem tenha interpretado mal algo pelos meus ERROS DE PORTUGUES acho que todos já perceberam que parece que eu não tenho nem o 2ª serie completa, real mente sou pesimo em portugues. Mas mesmo mesmo assim pesso desculpas a todos. ´Preciso sim´ preciso muinto da ajuada de todos. Se eu poder ajudar qualquer um eu ajudo não sei nada ainda porque ainda estou aprendendo,
OBS: disseram que sou ´contraditório´ dem uma olhada em meus topicos
em nenhum momento eu sito que quero compctar as imagem para diminuir o tamanho eu sito que quero compctar e para não ter de colocar dentro do exe para não ficar muinto grande.
===============================================
Estou aqui de novo pedindo ajuda. É o seguinte, o programa que estou criando para trocar o papel de parede do windows já estar com 72 megas 200 imagens JPG em um .RES estou querendo colocar mais 300 Imagens ai o executavel vai ficar maior e que estou querendo COMO faço para colocar estas imagens em outro lugar dentro de um arquivo ZIP ou RAR ou CAB ou ate mesmo uma dll.
No meu projeto as imagens são estraida do exe para a pasta WALLPAPER e depois converteidas para BMP e colocada como plano de Fundo do windows em tempo real que um jeito estrai as imagens deste mesmo jeito que estaio do exe porem de um ZIP ou RAR ou CAB ou DLL.
se alugem poder mi ajudar agradeço...
amigo é porque não quero que as imagens fique fora so uma de ca vez
O poblema não é aquntidade de arquivos ou se vai ou não compactar as imagens, só não quero e que meu exe fique tão grande (96Megas). Só quero uma forma de deixar as imagens gardadas e estrair uma por uma... Se alguem tiver um forma de fazer isto e poder mi ajudar..
[quote:e99ca33c07=´Adriano Santos´]
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.[/quote:e99ca33c07]
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
100 30000000000milhoes de megas como eu disse quero apenas juntar as imagens dentro de um zip ou rar dll ou qualquer outra coisa que faça isto e depois extrai-las um por uma. E sobre a imagens Jpg não dar para compactar já sei disto á 5 anos des de quando aprendi ligar um pc na tomada e não só jpg png gif e muito mais.
==============================================
OBS: disseram que sou ´contraditório´ dem uma olhada em meus topicos
em nenhum momento eu sito que quero compctar as imagem para diminuir o tamanho eu sito que quero compctar e para não ter de colocar dentro do exe para não ficar muinto grande.
===============================================
Estou aqui de novo pedindo ajuda. É o seguinte, o programa que estou criando para trocar o papel de parede do windows já estar com 72 megas 200 imagens JPG em um .RES estou querendo colocar mais 300 Imagens ai o executavel vai ficar maior e que estou querendo COMO faço para colocar estas imagens em outro lugar dentro de um arquivo ZIP ou RAR ou CAB ou ate mesmo uma dll.
No meu projeto as imagens são estraida do exe para a pasta WALLPAPER e depois converteidas para BMP e colocada como plano de Fundo do windows em tempo real que um jeito estrai as imagens deste mesmo jeito que estaio do exe porem de um ZIP ou RAR ou CAB ou DLL.
se alugem poder mi ajudar agradeço...
e porque voce já não deixa as imagens dentro da pasta e não no executavel
amigo é porque não quero que as imagens fique fora so uma de ca vez
O poblema não é aquntidade de arquivos ou se vai ou não compactar as imagens, só não quero e que meu exe fique tão grande (96Megas). Só quero uma forma de deixar as imagens gardadas e estrair uma por uma... Se alguem tiver um forma de fazer isto e poder mi ajudar..
[quote:e99ca33c07=´Adriano Santos´]
Masi será se não existe uma maneira de colocar estas imagens dentro deu um arquivo zip e estrailas um por uma??????????????????
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.[/quote:e99ca33c07]
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
100 30000000000milhoes de megas como eu disse quero apenas juntar as imagens dentro de um zip ou rar dll ou qualquer outra coisa que faça isto e depois extrai-las um por uma. E sobre a imagens Jpg não dar para compactar já sei disto á 5 anos des de quando aprendi ligar um pc na tomada e não só jpg png gif e muito mais.
==============================================
GOSTEI 0
Adriano Santos
22/09/2007
[quote:798aa23448=´Adriano Santos´][quote:798aa23448=´cgm2k7´]Masi será se não existe uma maneira de colocar estas imagens dentro deu um arquivo zip e estrailas um por uma??????????????????
Colega, não está entendendo. Mesmo que vc zipe os arquivos eles não irão diminuir de tamanho. Os arquivos JPEG já estão compactados.
Experimente pegar um monte de arquivos JPEG e zipá-los manualmente, vai notar que o tamanho de todos juntos ou zipados é o mesmo.[/quote:798aa23448]
colega acho que é vc que não estar entendendo, eu não estou querendo compactar as imagens para diminuir o tamanho eu quero apenas gardalas todas juntas em um unico arquivo para que elas não fique soutas e avista do usuario para min não importa se o tamanho dos vai ficar 10 megas 50 megas
100 30000000000milhoes de megas como eu disse quero apenas juntar as imagens dentro de um zip ou rar dll ou qualquer outra coisa que faça isto e depois extrai-las um por uma. E sobre a imagens Jpg não dar para compactar já sei disto á 5 anos des de quando aprendi ligar um pc na tomada e não só jpg png gif e muito mais.[/quote:798aa23448]
Cara, eu fico muito chateado com atitudes como esta. Quem me conhece sabe que há anos frequento o fórum e contribuo com todo mundo e sem pedir nada em troca afinal de contas um dia fui iniciante e muitos colegas do fórum me ajudaram a chegar onde estou hoje. O mínimo que posso fazer pra agradecer as dezenas de amizades que fiz é ser solidário e me doar o máximo possível a comunidade. Aliás, não sou nenhum expert, ou seja, estou sempre pedindo ajuda sem nenhuma vergonha.
cgm2k7, realmente vc é contraditório no que está querendo e mal educado.
tá vindo com grosseria pra cima da galera, principalmente do Adriano, que tem sempre contribuindo bastante pro fórum.
assim vc não vai consegui muita coisa não.
Bem, deixa isso pra lá. Vamos ao que interessa.
Como o [b:798aa23448]Werlon Goulart[/b:798aa23448] disse, o VCLZip tem componentes para compactar e descompactar. Se for o caso te mando o componente sem problema nenhum embora você possa efetuar o download no site do desenvolvedor em http://vclzip.bizland.com/.
Você também pode fazer isso com DLL se preferir. Crie uma dll usando [b:798aa23448]File >> New >> Other >> Dll Wizard[/b:798aa23448] na aba [b]New[b/]. O mesmo esquema criado no seu executável principal pode ser criado na dll, ou seja, arquivos de resource. Se tiver dúvidas na extração dos arquivos de dentro do executável (que pelo que percebi não é seu problema) você pode ler uns tópicos que dei uma força pra uma galera aqui do fórum. Segue abaixo:
Cara leia os tópicos a seguir:
[list:798aa23448]
[*:798aa23448][url=http://forum.clubedelphi.net/viewtopic.php?t=65476&highlight=resource]Como compilar 2 projetos Delphi num soh .exe um projeto cha[/url]
[*:798aa23448][url=http://forum.clubedelphi.net/viewtopic.php?t=64707&highlight=resource]Executável dentro de um executável[/url]
[*:798aa23448][url=http://forum.clubedelphi.net/viewtopic.php?t=77516&highlight=resource]Incluir Arquivo Word no Executavel[/url]
[*:798aa23448][url=http://forum.clubedelphi.net/viewtopic.php?t=77421&highlight=resource]Salvar configs dentro do .exe (não .res!!)[/url]
[/list:u:798aa23448]
E depois na dll você cria uma função para atualizar o papel de parede ou para extrair o arquivo JPG em algum lugar do micro. Lembre-se: sua DLL vai ficar tão grande quanto o executável hoje.
Uma pergunta: como você distribui sua aplicação? Via internet? Programa instalador?
Como faz?
A respeito de WinRAR se prefirir, meu colega de Devmedia, Paulo Quicoli, está com uma série de 5 vídeo-aulas sobre como trabalhar com WinRAR no Delphi.
Seguem os links:
[url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=6480]Compactando com WinRAR Parte 1[/url]
[url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=6524]Compactando com WinRAR Parte 2[/url]
[url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=6546]Compactando com WinRAR Parte 3[/url]
[url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=6593]Compactando com WinRAR Parte 4[/url]
[url=https://www.devmedia.com.br/articles/viewcomp.asp?comp=6615]Compactando com WinRAR Parte 5[/url]
E por último, arquivos CAB já ouvi falar de algum componente que faz isso. Massuda, não foi você que deu uma dica há um tempo atrás sobre isso? Ou estou com a memória fraca?
Precisando é só dar um toque.
Precisando é só dar um toque.
Abs
GOSTEI 0
Adriano Santos
22/09/2007
Ah, desculpas aceitas. Não tinha vista seu post ainda porque levei um tempo pra redigir a última resposta.
Sem crise, precisando estou sempre de plantão.
Abs :wink:
Sem crise, precisando estou sempre de plantão.
Abs :wink:
GOSTEI 0
Cgm2k7
22/09/2007
Ola Amigo Adriando Santos mais uma ves deculpe qualquer coisa. Se não for muinto incomado vc me dar mais uma ajuda. Meu arquivo .res tem 500 imagens JPG com a resolução de 800x600 (WALLPAPER.RES). Como faço para coloca-las em uma dll. Veja meu fonte...
As imagens jpg estam dentro do res nesta ordem
1JPG JPGFILE 1.JPEG
2JPG JPGFILE 2.JPG
Com A procedure CliqueGenerico as imagens são extraidas conforme o TAG de cada Componente TImage e depois renomeadas para cicero.jpg edepois convertidas para cicero.bmp OBS: uma imagem de cada vez. e antes de terminar a imagem jpg é deletada
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, MPlayer, GIFImage, ExtCtrls, Jpeg, Registry;
type
TForm1 = class(TForm)
menu: TImage;
wallpaper: TImage;
BitBtn1: TBitBtn;
SpeedButton1: TSpeedButton;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Image5: TImage;
Image7: TImage;
Image6: TImage;
Image8: TImage;
Image9: TImage;
Image10: TImage;
Image11: TImage;
Image12: TImage;
Image13: TImage;
Image14: TImage;
Image15: TImage;
Image16: TImage;
Image17: TImage;
Image18: TImage;
Image19: TImage;
Image20: TImage;
Image21: TImage;
Image22: TImage;
Image23: TImage;
Image24: TImage;
Image25: TImage;
Image26: TImage;
Image27: TImage;
Image28: TImage;
Image29: TImage;
Image30: TImage;
Image31: TImage;
Image32: TImage;
Image33: TImage;
Image34: TImage;
Image35: TImage;
Image36: TImage;
procedure image6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton1Click(Sender: TObject);
private
procedure CliqueGenerico(Sender: TObject);
public
procedure JpgToBmp(FileName: string);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R WALLPAPER.RES}
/////======Inicio Converter Imagems=======/////
procedure TForm1.JpgToBmp(FileName: string);
var
Bmp: TBitmap;
Stm: TMemoryStream;
Jpg: TJpegImage;
begin
if FileExists(FileName) then
begin
Jpg := TJpegImage.Create;
try
Jpg.LoadFromFile(filename);
Bmp := TBitmap.Create;
try
Bmp.Assign(Jpg);
Stm := TMemoryStream.Create;
Bmp.SaveToStream(Stm);
Stm.Position := 0;
Stm.SaveToFile(ChangeFileExt(FileName, ´.bmp´));
finally
Stm.Free;
end;
finally
Bmp.Free;
Jpg.Free;
end;
end;
end;
/////========Converter Imagems=======FIM/////
/////Inicio Estrair Imagens==========///////
procedure ImageJpg(arq: string);
var
PathToSave: string;
Res: TResourceStream;
begin
if not FileExists(PathToSave) then
begin
Res := TResourceStream.Create(Hinstance, arq, ´JPGFILE´);
try
Res.SavetoFile(GetEnvironmentVariable(´WINDIR´) + ´\web\Wallpaper\´ +
arq);
finally
Res.Free;
end;
end;
end;
////========Estrair Imagens===========FIM/////
////Inicio dos clicks nos Botões===========///
procedure TForm1.CliqueGenerico(Sender: TObject);
var
Registry: TRegistry;
begin
if Sender is TImage then
begin
DeleteFile(GetEnvironmentVariable(´WINDIR´) + ´\Web\Wallpaper\cicero.jpg´);
try
finally
ImageJPG(IntToStr(TImage(Sender).tag) + ´jpg´);
try
RenameFile(GetEnvironmentVariable(´WINDIR´) +´\Web\Wallpaper\´ +
IntToStr(TImage(Sender).Tag) + ´jpg´ ,GetEnvironmentVariable(´WINDIR´) +
´\Web\Wallpaper\cicero.jpg´);
finally
JpgToBmp(GetEnvironmentVariable(´WINDIR´) + ´\web\Wallpaper\cicero.jpg´);
try
finally
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0, PChar(GetEnvironmentVariable(´WINDIR´) +´\Web\Wallpaper\cicero.BMP´)
,SPIF_SENDWININICHANGE);
try
DeleteFile(GetEnvironmentVariable(´WINDIR´) + ´\Web\Wallpaper\cicero.jpg´);
finally
try
Registry := TRegistry.Create;
Registry.RootKey := hkey_current_user;
Registry.OpenKey(´Control Panel\Desktop´, true);
Registry.WriteString(´Wallpaper´, GetEnvironmentVariable(´WINDIR´) +
´\Web\Wallpaper\cicero.BMP´);
Registry.WriteString(´ConvertedWallpaper´,
GetEnvironmentVariable(´WINDIR´)
+ ´\Web\Wallpaper\cicero.BMP´);
Registry.WriteString(´OriginalWallpaper´,
GetEnvironmentVariable(´WINDIR´)
+ ´\Web\Wallpaper\cicero.BMP´);
Registry.CloseKey;
Registry.Free;
finally
end;
end;
end;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
indice: integer;
begin
SetWindowPos(Form1.handle, HWND_TOPMOST, Form1.Left, Form1.Top, Form1.Width,
Form1.Height, 0);
for indice := 0 to Self.ComponentCount -1 do
if Self.Components[indice] is TImage then
TImage(Self.Components[indice]).OnClick := CliqueGenerico;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if SSLeft in shift then
begin
ReleaseCapture();
Perform(WM_SYSCOMMAND, 61458, 1);
end;
end;
end.As imagens jpg estam dentro do res nesta ordem
1JPG JPGFILE 1.JPEG
2JPG JPGFILE 2.JPG
Com A procedure CliqueGenerico as imagens são extraidas conforme o TAG de cada Componente TImage e depois renomeadas para cicero.jpg edepois convertidas para cicero.bmp OBS: uma imagem de cada vez. e antes de terminar a imagem jpg é deletada
GOSTEI 0
Paulo Samurai
22/09/2007
@Adriano: Um componente que trabalha com arquivos .cab e .zip se não me falha a memória é o Abbrevia (Open). Zip certeza, cab talvez... nunca o usei para cab.
@cgm2k7: Este componente que citei, o abbrevia, vem com alguns exemplos e uma das instruções permite que voce extraia apenas um arquivo para um Stream de memória...
Junte isso ao Image que poderia carregar a imagem de um stream e bingo, solução completa.... recomendo a leitura do abbrevia docs e estudo dos exemplos.
[]´s
@cgm2k7: Este componente que citei, o abbrevia, vem com alguns exemplos e uma das instruções permite que voce extraia apenas um arquivo para um Stream de memória...
Junte isso ao Image que poderia carregar a imagem de um stream e bingo, solução completa.... recomendo a leitura do abbrevia docs e estudo dos exemplos.
[]´s
GOSTEI 0
Adriano Santos
22/09/2007
Valeu Samurai, iiiiiiaaaaaa. :lol:
Ainda não tive tempo de dar uma olhada no que o camarada pediu. Vou ver se consigo montar algum exemplo aqui e se conseguir, coloco pra download no meu blog.
Aliás, estão todos convidados a participar. Criei uma lista no YahooGrupos! também, quem quiser participar.
http://www.delphitodelphi.blogspot.com
Abs
Ainda não tive tempo de dar uma olhada no que o camarada pediu. Vou ver se consigo montar algum exemplo aqui e se conseguir, coloco pra download no meu blog.
Aliás, estão todos convidados a participar. Criei uma lista no YahooGrupos! também, quem quiser participar.
http://www.delphitodelphi.blogspot.com
Abs
GOSTEI 0
Cgm2k7
22/09/2007
Ai pessoal ainda estou precisando de ajuda não estou conceguindo colocar as imagens dentro de um dll, pelo que o adriano disse parece ser mais facio.
Vou tentar mais um pouco se eu não conseguir vou deichar as imagens em um diretório e escripta-las e depois descripta-las um por uma conforme for usando
Vou tentar mais um pouco se eu não conseguir vou deichar as imagens em um diretório e escripta-las e depois descripta-las um por uma conforme for usando
GOSTEI 0
Paulo Samurai
22/09/2007
cg, serviria um arquivo .dat?
Com o abbrevia (tem documentação com exemplos e tudo no sourceforge) voce poderia mandar por exemplo:
PROGRAMA.EXE
IMAGENS1.DAT
IMAGENS2.DAT
IMAGENS3.DAT
Esse dat na verdade seria um zip com senha... dai voce abriria eles e extrairia somente a imagem que voce deseja colocar como desktop ;)
Depois de instalado, o código para extração ficaria mais ou menos assim, criando o componente em runtime:
Obviamente, filename, basedirectory e arquivo a extrair seriam parametros... eu não tenho certeza se funciona normal usando a extensão DAT (se não teria que criar uma copia temporaria do arquivo como zip para extrair), mas eu acho que funciona sim.
[]´s
Com o abbrevia (tem documentação com exemplos e tudo no sourceforge) voce poderia mandar por exemplo:
PROGRAMA.EXE
IMAGENS1.DAT
IMAGENS2.DAT
IMAGENS3.DAT
Esse dat na verdade seria um zip com senha... dai voce abriria eles e extrairia somente a imagem que voce deseja colocar como desktop ;)
Depois de instalado, o código para extração ficaria mais ou menos assim, criando o componente em runtime:
var Zip: TAbZipKit; begin Zip := TAbZipKit.Create(self); Zip.Name := ´Zipper1´; Zip.AutoSave := False; Zip.DOSMode := False; Zip.DeflationOption := doMaximum; Zip.ExtractOptions := []; Zip.Password := ´123456´; Zip.StoreOptions := [soStripDrive, soStripPath, soRemoveDots]; Zip.FileName := ´c:\path\completo\arquivo.dat´; Zip.BaseDirectory := ´c:\path\completo\´; Zip.ExtractFiles(´imagem30.jpg´); Zip.Free end;
Obviamente, filename, basedirectory e arquivo a extrair seriam parametros... eu não tenho certeza se funciona normal usando a extensão DAT (se não teria que criar uma copia temporaria do arquivo como zip para extrair), mas eu acho que funciona sim.
[]´s
GOSTEI 0
Cgm2k7
22/09/2007
Paulo Samurai vou fazer um texte aqui qualquer coisa posto aqui beleza..
GOSTEI 0
Cgm2k7
22/09/2007
Ola pessoal já desisti não consigo colocar as imagens em um DLL NEM EM UM RAR NEM ZIP E NEM EM NADA já tentei de tudo um puoco, minha primeira tentativa foi com abbrevia não consigui instalar nenhum coponente do abbrevia a segunda foi rar tambem nada e terceira foi a o componete do delphi ZLIB, fiz os esquemas tudo certinho do meu jeito e do jeito que os colegas mi indicaram mas sempre dava o mesmo erro(este arquivos ja estar sendo usado por outro aplicativo) e a penutima tentativa foi com DLL como o amigo Adiano me deu a dica mas não consigo buscar as imagens dentro da dll que coloque num .RES e embuti na dll e a MINHA ULTIMA TENTATIVA foi o #abbrevia outra vez com a dica do amigo ai, e ainda não consegui instalar nenhum dos componentes acho que meu delphi7 é vacinado contra ABBREVIA... Vou usar o metodu de escriptar as imagens e dixar em um diretório...
GOSTEI 0
Anonymous
22/09/2007
Olá pessoal.
Bom, eu solucionaria assim... que tal usar uma base de dados firebird, uma tabela apenas
CREATE TABLE IMAGENS (
CODIGO INTEGER NOT NULL,
IMAGEM BLOB(512, 0),
CONSTRAINT IMAGENS_PK PRIMARY KEY (CODIGO));
Você pode usar FbEmbed.dll (modo embarcado) para acessar, que não precisa nem instalar o firebird.
Deixa as imagens na base de dados, o programa apenas acessa uma do banco e libera... :)
Bom, eu solucionaria assim... que tal usar uma base de dados firebird, uma tabela apenas
CREATE TABLE IMAGENS (
CODIGO INTEGER NOT NULL,
IMAGEM BLOB(512, 0),
CONSTRAINT IMAGENS_PK PRIMARY KEY (CODIGO));
Você pode usar FbEmbed.dll (modo embarcado) para acessar, que não precisa nem instalar o firebird.
Deixa as imagens na base de dados, o programa apenas acessa uma do banco e libera... :)
GOSTEI 0
Cgm2k7
22/09/2007
Olá pessoal.
Bom, eu solucionaria assim... que tal usar uma base de dados firebird, uma tabela apenas
CREATE TABLE IMAGENS (
CODIGO INTEGER NOT NULL,
IMAGEM BLOB(512, 0),
CONSTRAINT IMAGENS_PK PRIMARY KEY (CODIGO));
Você pode usar FbEmbed.dll (modo embarcado) para acessar, que não precisa nem instalar o firebird.
Deixa as imagens na base de dados, o programa apenas acessa uma do banco e libera... :)
o que é isto?
GOSTEI 0
Cgm2k7
22/09/2007
Ola pessoal até em fim consegui colocar as imagens jpg dentro de uma dll graças ao amigo ´Imhoteph´ de um outro forunOBS:não sei se pode colocar o nome do forun mas de poder eu coloco depois.
depos vou colcar o codigo fonte aqui para ajudar a outros que presizarem...
depos vou colcar o codigo fonte aqui para ajudar a outros que presizarem...
GOSTEI 0
Cgm2k7
22/09/2007
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShlObj, ActiveX, ComObj, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure CriaShortCut(aNome, aFileName: string; aLocation: integer);
var
IObject : IUnknown;
ISLink : IShellLink;
IPFile : IPersistFile;
PIDL : PItemIDList;
InFolder : array[0..MAX_PATH] of Char;
TargetName : String;
LinkName,s : WideString;
begin
TargetName := aFileName;
IObject := CreateComObject(CLSID_ShellLink);
ISLink := IObject as IShellLink;
IPFile := IObject as IPersistFile;
with ISLink do
begin
SetPath(pChar(TargetName));
SetWorkingDirectory(pChar(ExtractFilePath
(TargetName)));
end;
SHGetSpecialFolderLocation
(0, aLocation, PIDL);
SHGetPathFromIDList(PIDL, InFolder);
s := InFolder;
LinkName := s + ´\´ + aNome + ´.LNK´;
if FileExists(LinkName) then
ShowMessage(´Atalho já existe!´)
else
IPFile.Save(PWChar(LinkName), false);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CriaShortCut(´Wallpaper´, GetEnvironmentVariable(´PROGRAMFILES´)
+ ´\tex\Wall_2007.exe´ , CSIDL_COMMON_STARTMENU);
end;
{CSIDL_STARTMENU =Menu iniciar
CSIDL_PROGRAMS =Menu Iniciar\Programa
CSIDL_DESKTOP =DESKTOP
CSIDL_STARTUP =Menu Iniciar\Programa\Iniciar
CSIDL_COMMON_STARTMENU = Menu Iniciar All Usuários}
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShlObj, ActiveX, ComObj, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure CriaShortCut(aNome, aFileName: string; aLocation: integer);
var
IObject : IUnknown;
ISLink : IShellLink;
IPFile : IPersistFile;
PIDL : PItemIDList;
InFolder : array[0..MAX_PATH] of Char;
TargetName : String;
LinkName,s : WideString;
begin
TargetName := aFileName;
IObject := CreateComObject(CLSID_ShellLink);
ISLink := IObject as IShellLink;
IPFile := IObject as IPersistFile;
with ISLink do
begin
SetPath(pChar(TargetName));
SetWorkingDirectory(pChar(ExtractFilePath
(TargetName)));
end;
SHGetSpecialFolderLocation
(0, aLocation, PIDL);
SHGetPathFromIDList(PIDL, InFolder);
s := InFolder;
LinkName := s + ´\´ + aNome + ´.LNK´;
if FileExists(LinkName) then
ShowMessage(´Atalho já existe!´)
else
IPFile.Save(PWChar(LinkName), false);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CriaShortCut(´Wallpaper´, GetEnvironmentVariable(´PROGRAMFILES´)
+ ´\tex\Wall_2007.exe´ , CSIDL_COMMON_STARTMENU);
end;
{CSIDL_STARTMENU =Menu iniciar
CSIDL_PROGRAMS =Menu Iniciar\Programa
CSIDL_DESKTOP =DESKTOP
CSIDL_STARTUP =Menu Iniciar\Programa\Iniciar
CSIDL_COMMON_STARTMENU = Menu Iniciar All Usuários}
end.
GOSTEI 0
Cgm2k7
22/09/2007
Com eu disse que iria colocar o codigo de como colocar as jpegs em uma dll, ai estar...
[color=blue:60b93662cd]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Handle : THandle;
procedure ExtrairJPEG(arq: String);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ExtrairJPEG(arq: String);
Var
Res : TResourceStream;
begin
if Handle=0 then begin
Handle := LoadLibrary(´CgM2k8.dll´);
end;
Res := TResourceStream.Create(Handle, arq, ´JPGFILE´);
try
Res.SaveToFile(GetEnvironmentVariable(´WINDIR´)
+´\Web\Wallpaper\´ +arq);
finally
Res.Free
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Handle:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtrairJPEG(´1jpg´);
try
RenameFile(GetEnvironmentVariable(´WINDIR´)
+´\Web\Wallpaper\´ +´1jpg´ ,GetEnvironmentVariable(´WINDIR´) +
´\Web\Wallpaper\CgM2k8.jpg´);
finally
end;
end;
end.[/color:60b93662cd]
[color=blue:60b93662cd]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
Handle : THandle;
procedure ExtrairJPEG(arq: String);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ExtrairJPEG(arq: String);
Var
Res : TResourceStream;
begin
if Handle=0 then begin
Handle := LoadLibrary(´CgM2k8.dll´);
end;
Res := TResourceStream.Create(Handle, arq, ´JPGFILE´);
try
Res.SaveToFile(GetEnvironmentVariable(´WINDIR´)
+´\Web\Wallpaper\´ +arq);
finally
Res.Free
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Handle:=0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtrairJPEG(´1jpg´);
try
RenameFile(GetEnvironmentVariable(´WINDIR´)
+´\Web\Wallpaper\´ +´1jpg´ ,GetEnvironmentVariable(´WINDIR´) +
´\Web\Wallpaper\CgM2k8.jpg´);
finally
end;
end;
end.[/color:60b93662cd]
GOSTEI 0
Ruysalles
22/09/2007
Você tem a opção de colocar suas imagens em um banco de dados.
GOSTEI 0
Cgm2k7
22/09/2007
Você tem a opção de colocar suas imagens em um banco de dados.
[color=red:7482766381]Não entendi explique melhor![/color:7482766381]
GOSTEI 0
Ruysalles
22/09/2007
Como aparentemente vc está utilizando uma aplicação desktop, aconselho vc utilizar o MSAcces como base de dados, pois desta forma não é necessário ter o serviço de uma gerenciador rodando juntamente com a sua aplicação.
Vou postar o código para gravar e ler uma imagem do banco de dados.
Primeiro, você deverá criar um campo tipo Objeto Ole no banco de dados, onde irá serão armazenadas as suas imagens.
No delphi para salvar:
image1.Picture.SaveToFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´);
grava_imagem(´ INSERT INTO tbl_imagem (img_foto) values (:imagem)´);
A função grava_imagem
procedure grava_imagem(Lstr_sql: string);
begin
with dtm_datamodule.qry_executa do
begin
sql.text := Lstr_sql;
try
Parameters[0].LoadFromFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´,ftBlob);
ExecSQL;
except
on e:exception do
ShowMessage(e.message);
end;
end;
end;
Para visualizar a imagem
if FileExists(´imagens\foto.bmp´) then
DeleteFile(´imagens\foto.bmp´);
mostra_imagem(´ SELECT img_foto ´ +
´ FROM tbl_imagem´ +
´ WHERE ide_imagem = ´ + inttostr(Fint_ide_imagem));
try
img_capa.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + ´\imagens\foto.bmp´);
except
showmessage(´erro ao carregar imagem´)
end;
Para poder manipular imagens, delclare a unit Jpeg em seu form.
Espero ter ajudado
Vou postar o código para gravar e ler uma imagem do banco de dados.
Primeiro, você deverá criar um campo tipo Objeto Ole no banco de dados, onde irá serão armazenadas as suas imagens.
No delphi para salvar:
image1.Picture.SaveToFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´);
grava_imagem(´ INSERT INTO tbl_imagem (img_foto) values (:imagem)´);
A função grava_imagem
procedure grava_imagem(Lstr_sql: string);
begin
with dtm_datamodule.qry_executa do
begin
sql.text := Lstr_sql;
try
Parameters[0].LoadFromFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´,ftBlob);
ExecSQL;
except
on e:exception do
ShowMessage(e.message);
end;
end;
end;
Para visualizar a imagem
if FileExists(´imagens\foto.bmp´) then
DeleteFile(´imagens\foto.bmp´);
mostra_imagem(´ SELECT img_foto ´ +
´ FROM tbl_imagem´ +
´ WHERE ide_imagem = ´ + inttostr(Fint_ide_imagem));
try
img_capa.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + ´\imagens\foto.bmp´);
except
showmessage(´erro ao carregar imagem´)
end;
Para poder manipular imagens, delclare a unit Jpeg em seu form.
Espero ter ajudado
GOSTEI 0
Cgm2k7
22/09/2007
Como aparentemente vc está utilizando uma aplicação desktop, aconselho vc utilizar o MSAcces como base de dados, pois desta forma não é necessário ter o serviço de uma gerenciador rodando juntamente com a sua aplicação.
Vou postar o código para gravar e ler uma imagem do banco de dados.
Primeiro, você deverá criar um campo tipo Objeto Ole no banco de dados, onde irá serão armazenadas as suas imagens.
No delphi para salvar:
image1.Picture.SaveToFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´);
grava_imagem(´ INSERT INTO tbl_imagem (img_foto) values (:imagem)´);
A função grava_imagem
procedure grava_imagem(Lstr_sql: string);
begin
with dtm_datamodule.qry_executa do
begin
sql.text := Lstr_sql;
try
Parameters[0].LoadFromFile(ExtractFilePath(Application.ExeName) + ´/imagens/foto.bmp´,ftBlob);
ExecSQL;
except
on e:exception do
ShowMessage(e.message);
end;
end;
end;
Para visualizar a imagem
if FileExists(´imagens\foto.bmp´) then
DeleteFile(´imagens\foto.bmp´);
mostra_imagem(´ SELECT img_foto ´ +
´ FROM tbl_imagem´ +
´ WHERE ide_imagem = ´ + inttostr(Fint_ide_imagem));
try
img_capa.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + ´\imagens\foto.bmp´);
except
showmessage(´erro ao carregar imagem´)
end;
Para poder manipular imagens, delclare a unit Jpeg em seu form.
Espero ter ajudado
Olá ruysalles pelo o que entende vc quer dizer que colocando as imagens em banco de dados o pograminha roda mais leve na memoria ou seja consome menas memoria certo?
Meu Programinha já estar quaze pronto, só fauta alguns detalhes de instalasão, atahlos etc. estou uzando o metodo de colocar imagens em DLL coloque 1000 imagens JPEG e BITMAPs sendo: 500 para papel de parede do windows e 500 para vizualisão dos componentes TImages, o executavél ficou 1.11megas OBS:(cabe dentro de um disquet)Para mi colocar as as imagens em banco de dado vou ter de começar tudo de novo, mas este não é o poblema o poblema é que eu não sei nada de banco de dados não sei nem qual é este componente aida estou estudados não conheço nada. O exemplo que vc colocou não entede nada. Se vc colocar o codigo de como colocar as imagens em banco de dados e que componente e este ou pelomenos o endereço de um site de onde fale sobre, vou corre atras sabendo eu que é para aprender mais sobre e para meu aplicativo ter malhor desempenhos com serteza tentarei adapita-la com o meu projeto e se eu conseguir como sempre digo colocarei o codigo fonte para que sirva de ajuda para outra pessoas iniciantes como eu e até mesmo para professionais como vc e outros não para usar os codigos mas para quando vc for ajudar outras pessoas apenas indicar o link do TOPCO.
Se vc poder colocar os codigo ou link de onde tem explicado melhor des de já agradeço.
GOSTEI 0
Cgm2k7
22/09/2007
depois de pronto vou disponibilizar um verção bet para download
esta verção terá apenas 178 wallpaper.
em breve estarei disponabilizando para download
esta verção terá apenas 178 wallpaper.
em breve estarei disponabilizando para download
GOSTEI 0
Cgm2k7
22/09/2007
[color=darkred:682d9d72ee]Olá pessoa primeiramente agradeço a todos que me ajudaram, sem ajuda do pessoa aqui do forum eu não tereria conseguido terminar este program da maneira que eu queria. OBRIGADO a TODOS...[/color:682d9d72ee]
[color=blue:682d9d72ee]Para que quizer estar ai o link para download: http://rapidshare.com/files/71962846/install_WALLPAPAER_2007.rar
[/color:682d9d72ee]
[color=green:682d9d72ee]É uma verção beta, não tem 1000 wallpaper tem apenas 178 walpaper[/color:682d9d72ee]
[color=blue:682d9d72ee]Para que quizer estar ai o link para download: http://rapidshare.com/files/71962846/install_WALLPAPAER_2007.rar
[/color:682d9d72ee]
[color=green:682d9d72ee]É uma verção beta, não tem 1000 wallpaper tem apenas 178 walpaper[/color:682d9d72ee]
GOSTEI 0
Cgm2k7
22/09/2007
[color=darkred:458bf2287a]Olá pessoa primeiramente agradeço a todos que me ajudaram, sem ajuda do pessoa aqui do forum eu não tereria conseguido terminar este program da maneira que eu queria. OBRIGADO a TODOS...[/color:458bf2287a]
[color=blue:458bf2287a]Para que quizer estar ai o link para download: http://rapidshare.com/files/71962846/install_WALLPAPAER_2007.rar
[/color:458bf2287a]
[color=green:458bf2287a]É uma verção beta, não tem 1000 wallpaper tem apenas 178 walpaper[/color:458bf2287a]
GOSTEI 0