Otwieranie plikow

0

Zrobiłem ostatnio program w stylu notatnika. Właściwie to on działa prawidłowo, ale jest jeden zonk.

Wziąłem dowolny plik tekstowy i pojechałem prawym przyciskiem myszy -->otwórz za pomocą --> i kliknełem na mój program. Program się otworzył, ale nie wgrał pliku tekstowego (i nie dziwota).

Jak zrobić, aby przy w/w operacji, plik automatycznie wgrał się do Richedit ????

0

w czasie startu programu musisz odczytac paramtery uruchomienia aplikacji, czyli nazwe pliku tekstowego do odczytania a nastepnie go zaladowac.

w delphi, aby odczytac pierwszy paramter aplikacji wywolujesz:

var
parametr: string;

parametr = ParamSts(1);

w c++ builderze:

AnsiString parametr;

parametr = ParamStr(1);

--
kerim,
Kto pyta - błądzi inaczej...

0

Czy mozesz jaśniej to onjaśnić , bo nie za bardzo rozumiem...

0

Czy mozesz jaśniej to onjaśnić , bo nie za bardzo rozumiem...

Załóżmy, że ładujesz do Memo.

W pliku projektu (dpr) wpiszejesz:

var
Parametr: string;
begin
Parametr := ParamStr(1);
Application. .....
...
end.

A potem np. w OnCreate:
Memo1.Lines.LoadFromFile(Parametr);

Byćmoże będziesz potrzebował pozmieniać skojarzenia plików (jeżeli chcesz na stałe. W Typach plików przy swoim typie w wywołaniu programu musisz dodać %1 (ale przy pojedynczym wyborze z listy chyba nie jest to konieczne)

--
Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

0

Pochwalony!
Przy tym problemie trzeba skorzystać z opcji ParamStr();. Napisz to w zdarzeniu OnCreate, najlepiej, bądź gdzie chcesz.
if ParamStr(1) > '' then
begin
<font color="darkblue">//tutaj piszesz coś jeżeli program został odpalony z parametrem</span>
end;

[color=]</span>
Procedurka ParamStr() określa parametry przy włączaniu proga. np.

Program.exe yaya

Tutajparametrem 1 jest yaya. Ale gdy napiszesz

Program.exe yaya uuu

To są 2 parametry, 1 - yaya, 2 - uuu.
Mam nadzieję że zrozumiałeś. Acha, przy odpalaniu takn jak napisałeś programa, pliczek odpalany będzie w Paramie 1, bądź 0, kiepsko u mnie z pamięcią :).
O kurcze, ale się rozpisałem, nan nadzieję że zrozumiesz... Pa

0

No dobrze - rozumiem już - czyli parametr "1" oznacza otwarcie pliku - ale skąd mam wziąć nazwe pliku, jaki wybrał użytkownik do otworzenia przez mój program. ???

0

No dobrze - rozumiem już - czyli parametr "1" oznacza otwarcie pliku - ale skąd mam wziąć nazwe pliku, jaki wybrał użytkownik do otworzenia przez mój program. ???

ParamCount - liczba parametrów przekazanych do programu
ParamStr(0) - ścieżka własna programu
Paramstr(1) - pierwszy parametr
ParamStr(2) - drugi parametr
itd...

przykład jak nie kumasz co to parametr:
jak np. piszesz w dosie
c:\windows\command\copy.com plik1.txt plik2.txt
to
ParamStr(0) - c:\windows\command\copy.com
Paramstr(1) - plik1.txt
ParamStr(2) - plik2.txt

no więc nazwę pliku masz wziąć z Paramstr(1) :)

--
Pozdrawiam...
piechnat

0

no dobrze - to jest zrozumiałe - a co jeśli plik który chcĘ otworzyć znajduje się na innym katalogu (w szczególności na innym dysku). Najlepiej prosiłbym o stosowny przykład, tak jak poprzedni... (czy wtedy parametr (1) jest tylko nazwą pliku czy całą jego ścieżką i nazwą??

0

no dobrze - to jest zrozumiałe - a co jeśli plik który chcĘ otworzyć znajduje się na innym katalogu (w szczególności na innym dysku). Najlepiej prosiłbym o stosowny przykład, tak jak poprzedni... (czy wtedy parametr (1) jest tylko nazwą pliku czy całą jego ścieżką i nazwą??

paramstr(n: integer) zwraca tylko tekst ktory nastepuje po wywolaniu aplikacji, np:
[code]
c:\aplikacja.exe plik.txt -> ParamStr(1) = "plik.txt";
c:\aplikacja.exe d:\plik.txt -> ParamStr(1) = "d:\plik.txt";

Natomiast jesli nazwa pliku lub parametr ma posiadac znaki specjalne, typu spacja i te nieobslugiwane przez DOS to parametr trzeba wziasc w cudzyslow.
[/code]

teraz jasne?

--
kerim,
Kto pyta - błądzi inaczej...

0

...Wziąłem dowolny plik tekstowy i pojechałem prawym przyciskiem myszy -->otwórz za pomocą --> i kliknełem na mój program. Program się otworzył, ale nie wgrał pliku tekstowego (i nie dziwota)...

w takim przypadku
ParamStr(1);
zwróci ci całą scieżkę z nazwą pliku.

myślę że już czas żebyś to wprowadził do swojego programu i sprawdził w praktyce.

O literę dysku już nie pytaj, też będzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1