Ĺadny brzuch
Mam prawie gotowy program lecz brakuje mi jeszcze kilku funkcji.
1. otwieranie wyswietlonego obrazu w programie ktorego lokalizacja znajduje sie w edit1
2. drukowaniu całego katalogu przez kreator drukowania taki jak w podgladzie obrazow i faksow.
(program podobny do programu fotopokaz z eksperta)
3. no i funkcja ktora bedzie ladowala obrazy po wybraniu z poziomu windowsa "otworz za pomoca"
INFO:
program podobny do programu fotopokaz z eksperta [graphicex]
uprzejmie dziekuje za pomoc
pozdro :)
Mam prawie gotowy program
Zazdroszczę :)
lecz brakuje mi jeszcze kilku funkcji. I co w związku?
Napisz konkretnie czego nie wiesz a nie lista "napiszcie mi jak zrobic to, to i to".
otwieranie wyswietlonego obrazu w programie ktorego lokalizacja znajduje sie w edit1 Skorzystaj z fukcji ShellExecute. Kliknij po więcej :)
no i funkcja ktora bedzie ladowala obrazy po wybraniu z poziomu windowsa "otworz za pomoca"
To musisz w rejestrze dodać jakieś tam klucze chyba :/ Zdaje się że na 4programmers.net kiedyś coś tam o tym czytałem
więc poszukaj czegoś na tej stronie. O ile się nie mylę, to wszystko jest zapisane w kluczu HKEY_CLASSES_ROOT.
Użytkownik Capellini edytował ten post 17 kwiecień 2007, 18:52
Skorzystaj z fukcji ShellExecute. Kliknij po więcej :)
To musisz w rejestrze dodać jakieś tam klucze chyba :/ Zdaje się że na 4programmers.net kiedyś coś tam o tym czytałem
więc poszukaj czegoś na tej stronie. O ile się nie mylę, to wszystko jest zapisane w kluczu HKEY_CLASSES_ROOT.
Nie Nie to wiem chodzi mi o to ze hmm....
Masz przykładowo plik HEJ.bmp i nie chcesz go otwozyc
(tylko w tym momencie) w "podgladzie obrazow i faksow" i bierzesz otwoz za pomoca nie ? :)
i wybierasz Ten "moj program".
Gdy biore to owszem otwiera sie w moim programie ale nie laduje tego obrazu...
potrzebuje kod jak to zrobic :)
W OnCreate:
if ParamCount > 0 then Image1.Picture.LoadFromFile(ParamStr(1));
W OnCreate:
if ParamCount > 0 then Image1.Picture.LoadFromFile(ParamStr(1));
Ten kod należałoby trochę udoskonalić, bo będzie bezużyteczny jak będziesz próbował otworzyć plik, który w ścieżce ma
jedną lub więcej spacji, a więc należałoby to tak napisać:
var plik: string; i: integer; if ParamCount>0 then begin plik:=''; for i:=1 to ParamCount do plik:=plik+ParamStr(i); Image1.Picture.LoadFromFile(plik); end;
To powinno załatwić sprawę :coolio:
Ten kod należałoby trochę udoskonalić, bo będzie bezużyteczny jak będziesz próbował otworzyć plik, który w ścieżce ma
jedną lub więcej spacji, a więc należałoby to tak napisać:
var plik: string;<BR> Â Â Â Â Â Â i: integer;<BR> <BR> if ParamCount>0 then begin<BR> Â Â plik:='';<BR> Â Â for i:=1 to ParamCount do plik:=plik+ParamStr(i);<BR> Â Â Image1.Picture.LoadFromFile(plik);<BR> Â Â end;
To powinno załatwić sprawę :coolio: Nie, bo jak podasz w parametrze dwa pliki to Ci sie program wykruszy. Wykluczasz rowniez mozliwosc dodania parametrow startowych.
Dobrym zwyczajem jest podawanie nazw plikow ze spacjami w cudzyslowach. Przejzyj troche rejestr, zauwazysz ze znaczna wiekszosc, jak nie wszystkie typy plikow, zawieraja w kluczu command wartosc 'nazwa_programu.exe "%1"', dzieki czemu do programu zostanie przekazana cala nazwa, razem ze spacjami.
Tak wiec tamten kod moznaby jeszcze udoskonalic, ale nie w te strone co Ty kombinujesz.
Pliki ze spacjami w ścieżce zapisuje się w cudzysłowach - to powinien wiedzieć każdy użytkownik konsoli. A co parametrów innych niż ścieżka plików, to wystraczy kilka warunków.
var {...} i: byte; begin if paramcount = 0 then EXIT; for i := 1 to ParamCount do begin if ParamStr(i) = 'p' then //operacje jeśli jest parametr p else if ParamStr(i) = 'a' then //operacje dla parametru a else if (FileExists(ParamStr(i)) and (ExtractFileExt(ParamStr(i)) = '.jpg') then //wiemy ze użytkownik podał ścieżkę więc np - tworzymy dynamicznie TImage else ShowMessage('Niepoprawny parametr ' + paramStr(i)); end; end;
Ale nie jest to potrzebne bo autor nie pisał nic o konsoli tylko o opcji "Otwórz za pomocą"
Użytkownik p1101 edytował ten post 26 kwiecień 2007, 16:35
Nie, bo jak podasz w parametrze dwa pliki to Ci sie program wykruszy. Wykluczasz rowniez mozliwosc dodania parametrow startowych.
Dobrym zwyczajem jest podawanie nazw plikow ze spacjami w cudzyslowach. Przejzyj troche rejestr, zauwazysz ze znaczna wiekszosc, jak nie wszystkie typy plikow, zawieraja w kluczu command wartosc 'nazwa_programu.exe "%1"', dzieki czemu do programu zostanie przekazana cala nazwa, razem ze spacjami.
Tak wiec tamten kod moznaby jeszcze udoskonalic, ale nie w te strone co Ty kombinujesz.
Faktycznie, ale jak do programu, który służyłby tylko do otwierania jednego pliku, bez dodatkowych parametrów, to wystarcza w zupełności :D.
Faktycznie, ale jak do programu, który służyłby tylko do otwierania jednego pliku, bez dodatkowych parametrów, to wystarcza w zupełności :D . Myslmy przyszlosciowo ;)
p1101 - jak Ty sie zaczynasz bawic z wieloma parametrami to daj sobie spokoj z tym swoim sposobem.
Bez cudzyslowa nie ujedziesz, zobaczysz ze zawsze znajdzie sie agent co Ci program wykruszy i bedzie wesolo. Lepiej zastosowac sprawdzone sposoby, to raz, dwa jak user zechce sie bawic konsola, raz odpali program bez cudzyslowow i zobaczy ze sie wykruszyl /lepiej jakbys to przewidzial i temu zapobiegl/ to sprobuje z cudzyslowem i wtedy mu zadziala.
A co Ty mu wsadzisz do rejestru to juz go nie bedzie interesowalo, wiec lepiej zrob tak jak Ci mowie.
A windows domyslnie /przez to 'otworz za pomoca'/ tez chyba przekazuje nazwe w cudzyslowach, bo w przeciwnym razie za duzo problemow by to stwarzalo.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
1. otwieranie wyswietlonego obrazu w programie ktorego lokalizacja znajduje sie w edit1
2. drukowaniu całego katalogu przez kreator drukowania taki jak w podgladzie obrazow i faksow.
(program podobny do programu fotopokaz z eksperta)
3. no i funkcja ktora bedzie ladowala obrazy po wybraniu z poziomu windowsa "otworz za pomoca"
INFO:
program podobny do programu fotopokaz z eksperta [graphicex]
uprzejmie dziekuje za pomoc
pozdro :)
Mam prawie gotowy program
Zazdroszczę :)
lecz brakuje mi jeszcze kilku funkcji. I co w związku?
Napisz konkretnie czego nie wiesz a nie lista "napiszcie mi jak zrobic to, to i to".
otwieranie wyswietlonego obrazu w programie ktorego lokalizacja znajduje sie w edit1 Skorzystaj z fukcji ShellExecute. Kliknij po więcej :)
no i funkcja ktora bedzie ladowala obrazy po wybraniu z poziomu windowsa "otworz za pomoca"
To musisz w rejestrze dodać jakieś tam klucze chyba :/ Zdaje się że na 4programmers.net kiedyś coś tam o tym czytałem
więc poszukaj czegoś na tej stronie. O ile się nie mylę, to wszystko jest zapisane w kluczu HKEY_CLASSES_ROOT.
Użytkownik Capellini edytował ten post 17 kwiecień 2007, 18:52
Skorzystaj z fukcji ShellExecute. Kliknij po więcej :)
To musisz w rejestrze dodać jakieś tam klucze chyba :/ Zdaje się że na 4programmers.net kiedyś coś tam o tym czytałem
więc poszukaj czegoś na tej stronie. O ile się nie mylę, to wszystko jest zapisane w kluczu HKEY_CLASSES_ROOT.
Nie Nie to wiem chodzi mi o to ze hmm....
Masz przykładowo plik HEJ.bmp i nie chcesz go otwozyc
(tylko w tym momencie) w "podgladzie obrazow i faksow" i bierzesz otwoz za pomoca nie ? :)
i wybierasz Ten "moj program".
Gdy biore to owszem otwiera sie w moim programie ale nie laduje tego obrazu...
potrzebuje kod jak to zrobic :)
W OnCreate:
if ParamCount > 0 then Image1.Picture.LoadFromFile(ParamStr(1));
W OnCreate:
if ParamCount > 0 then Image1.Picture.LoadFromFile(ParamStr(1));
Ten kod należałoby trochę udoskonalić, bo będzie bezużyteczny jak będziesz próbował otworzyć plik, który w ścieżce ma
jedną lub więcej spacji, a więc należałoby to tak napisać:
var plik: string; i: integer; if ParamCount>0 then begin plik:=''; for i:=1 to ParamCount do plik:=plik+ParamStr(i); Image1.Picture.LoadFromFile(plik); end;
To powinno załatwić sprawę :coolio:
Ten kod należałoby trochę udoskonalić, bo będzie bezużyteczny jak będziesz próbował otworzyć plik, który w ścieżce ma
jedną lub więcej spacji, a więc należałoby to tak napisać:
var plik: string;<BR> Â Â Â Â Â Â i: integer;<BR> <BR> if ParamCount>0 then begin<BR> Â Â plik:='';<BR> Â Â for i:=1 to ParamCount do plik:=plik+ParamStr(i);<BR> Â Â Image1.Picture.LoadFromFile(plik);<BR> Â Â end;
To powinno załatwić sprawę :coolio: Nie, bo jak podasz w parametrze dwa pliki to Ci sie program wykruszy. Wykluczasz rowniez mozliwosc dodania parametrow startowych.
Dobrym zwyczajem jest podawanie nazw plikow ze spacjami w cudzyslowach. Przejzyj troche rejestr, zauwazysz ze znaczna wiekszosc, jak nie wszystkie typy plikow, zawieraja w kluczu command wartosc 'nazwa_programu.exe "%1"', dzieki czemu do programu zostanie przekazana cala nazwa, razem ze spacjami.
Tak wiec tamten kod moznaby jeszcze udoskonalic, ale nie w te strone co Ty kombinujesz.
Pliki ze spacjami w ścieżce zapisuje się w cudzysłowach - to powinien wiedzieć każdy użytkownik konsoli. A co parametrów innych niż ścieżka plików, to wystraczy kilka warunków.
var {...} i: byte; begin if paramcount = 0 then EXIT; for i := 1 to ParamCount do begin if ParamStr(i) = 'p' then //operacje jeśli jest parametr p else if ParamStr(i) = 'a' then //operacje dla parametru a else if (FileExists(ParamStr(i)) and (ExtractFileExt(ParamStr(i)) = '.jpg') then //wiemy ze użytkownik podał ścieżkę więc np - tworzymy dynamicznie TImage else ShowMessage('Niepoprawny parametr ' + paramStr(i)); end; end;
Ale nie jest to potrzebne bo autor nie pisał nic o konsoli tylko o opcji "Otwórz za pomocą"
Użytkownik p1101 edytował ten post 26 kwiecień 2007, 16:35
Nie, bo jak podasz w parametrze dwa pliki to Ci sie program wykruszy. Wykluczasz rowniez mozliwosc dodania parametrow startowych.
Dobrym zwyczajem jest podawanie nazw plikow ze spacjami w cudzyslowach. Przejzyj troche rejestr, zauwazysz ze znaczna wiekszosc, jak nie wszystkie typy plikow, zawieraja w kluczu command wartosc 'nazwa_programu.exe "%1"', dzieki czemu do programu zostanie przekazana cala nazwa, razem ze spacjami.
Tak wiec tamten kod moznaby jeszcze udoskonalic, ale nie w te strone co Ty kombinujesz.
Faktycznie, ale jak do programu, który służyłby tylko do otwierania jednego pliku, bez dodatkowych parametrów, to wystarcza w zupełności :D.
Faktycznie, ale jak do programu, który służyłby tylko do otwierania jednego pliku, bez dodatkowych parametrów, to wystarcza w zupełności :D . Myslmy przyszlosciowo ;)
p1101 - jak Ty sie zaczynasz bawic z wieloma parametrami to daj sobie spokoj z tym swoim sposobem.
Bez cudzyslowa nie ujedziesz, zobaczysz ze zawsze znajdzie sie agent co Ci program wykruszy i bedzie wesolo. Lepiej zastosowac sprawdzone sposoby, to raz, dwa jak user zechce sie bawic konsola, raz odpali program bez cudzyslowow i zobaczy ze sie wykruszyl /lepiej jakbys to przewidzial i temu zapobiegl/ to sprobuje z cudzyslowem i wtedy mu zadziala.
A co Ty mu wsadzisz do rejestru to juz go nie bedzie interesowalo, wiec lepiej zrob tak jak Ci mowie.
A windows domyslnie /przez to 'otworz za pomoca'/ tez chyba przekazuje nazwe w cudzyslowach, bo w przeciwnym razie za duzo problemow by to stwarzalo.