HELP z ParamStr

0

Jak zrobić aby mój program otwierał pliki typu *.txt.
if ParamCount>0 then Memo1.Lines.LoadFromFile(ParamStr(1));
To nie działa, nie wiem dlaczego :-( :-(

0

hmmmmmm 1. sprawdz czy plik istnieje 2. daj do w onshow formy.... moze to po skutkuje

[Dopisane]

Po dłuższym wglądzie na posta spostrzeglem ze chcesz wczytac [u]tylko[/u] pliki typu TXT ;)

if ParamCount>0 then If ExtractFileExt(ParamStr(1))='.TXT' then Memo1.Lines.LoadFromFile(ParamStr(1));

0

ad1) W OpenDialogu (pewnie go uzywasz) wpisz w filtr Pliki textowe | *.txt

0

var
parametr:string
i:integer;
BEGIN

if (ParamStr(1) '') then
begin
parametr := '';
i := 1;
repeat
if ParamStr(i) '' then parametr := parametr + ParamStr(i) + ' ';
i := i + 1;
until ParamStr(i) = '';
opendialog1.FileName := parametr;

richedit.Lines.LoadFromFile(opendialog1.FileName);

END;

0

DetoX

proszę zajrzyj tu:

http://4programmers.net/view_faq.php?id=310

0

Chciałbym odświeżyć ten topic... Bo akurat mam znowu z tym kłopot.

Vogel: ale to jest wpis do rejestru. Chodzi mi o przekazanie parametru do programu, aby ten go otworzył. Na XP jest wszystko pięknie, ale na 98 na przykład, jeśli w nazwie jakiegoś pośredniego katalogu jest spacja, to nie może otworzyć bo uciana parametr właśnie w tym miejscu. Ja stosuje do tego właśnie pętelke jak napisałem, ale ona dodaje spacje na końcu... tylko nie wiem czemu nie mogę jej wykasować jakoś :/

Czy ktos ma jakieś sensowne rozwiązanie? Np. wyznaczyć s:string jako nazwe otwieranego pliku (to znaczy + jego ścieżka) jako parametr...
???

0

trza pamiętać o wywoływaniu, tzn prog.exe "%1" (to chyba w rejestrze być powinno) a w tedy będzie gut. poza tym pentelka na kompletowanie nazwy musiała by również uwzględniać przelączniki i dla tego zawsze robie mniej więcej tak: wszystkie przełączniki zaczynaja się od "/", natomiast w ścieżkach jest "" więc wystarczy sprawdzać to i dopowiednio przerywać pętle, aby przypadkiem nie załapała przełącnika jako nazwy pliku

0

To może inaczej. Potrzebuje wyciągnąć rozszerzenie pliku, z pliku otwieranego. W OnCreate wpisałem:

parametr := '';
  if (ParamStr(1) <> '') then
  begin
    i := 1;
    repeat
      if ParamStr(i) <> '' then parametr := parametr + ParamStr(i) + ' ';
      i := i + 1;
    until ParamStr(i) = '';
    prcFileOpen(parametr);

// s: string, i: integer;

I teraz w procedurze prcFileOpen sprawdzam sobie rozszerzenie, ale zawsze na jego końcu występuje spacja.. czy już nawet nie jest to spacja: nie wiem sam co to jest- nie mogę tego usunąć.

Moje metody "badawcze":

<font color="blue">ShowMessage('|' + ExtractFileName(parametr) + '|');</span>

I otrzymałem na przykład:

|C:/Windows/plik.txt |

I chodzi o to miejsce puste na końcu między "t" a "|", jak chce to wywalić to występuje Acces Violation, jak mówiłem - to chyba nawet nie jest spacja :/, już mnie to zaczyna zdeczka wkurzać.

0

Detox: ta linijka wygląda na winną:

if ParamStr(i) <> '' then parametr := parametr + ParamStr(i) + <font color="red">' '</span>;

Dodaje spację bez względu na to, czy to ostatni element parametru czy nie.

0

Faktycznie... już poprawiłem i działa.

Dla zainteresowanych:

parametr := '';
  if (ParamStr(1) <> '') then
  begin
    i := 1;
    repeat
      if ParamStr(i) <> '' then parametr := parametr + ParamStr(i);
      i := i + 1;
      if ParamStr(i+1) <> '' then parametr := parametr + ' ';
    until ParamStr(i) = '';
  end;

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