jak wydobyć extractfilename z openpicturedialog.files

2012-10-03 20:49

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0

Witam, mam kolejny problem, mianowicie chcę wydobyć nazwę pliku z openpicturedialog.files (właściwie to nazwy-multiselect)
Kod:

 memo1.Assign(openpicturedialog1.Files);

wczytuje mi nazwy plików wraz ze ścieżką. Jak z tego wydobyć samą nazwę pliku?
Próbowałem zrobić tak:


for i:=0 to openpicturedialog1.ComponentCount-1 do
Memo1.Lines.Add(Extractfilename(OpenPictureDialog1.FileName[i]));

ale zamiast nazw plików w memo lądują litery C i po kilku liniach D
Nie mam zielonego pojęcia jak się do tego zabrać


quidquid Latine dictum sit, altum videtur
edytowany 1x, ostatnio: olesio, 2012-10-04 18:12

Pozostało 580 znaków

2012-10-03 21:08
Moderator

Rejestracja: 12 lat temu

Ostatnio: 36 minut temu

Lokalizacja: Wrocław

0

Zastanawiasz się może nad tym, co robisz?
Patrz:
Skoro na początku robisz:

memo1.Assign(openpicturedialog1.Files);

To z jakiej racji potem nagle odwołujesz się do:

OpenPictureDialog1.FileName[i]

Poza tym skąd niby wziąłeś to:

.ComponentCount-1

?

Hint: property Files z OpenPictureDialog jest typu TStrings; ilość plików pobierzesz za pomocą Files.Count, a do konkretnego odwołasz się korzystając z Files[index].


edytowany 2x, ostatnio: Patryk27, 2012-10-03 21:10

Pozostało 580 znaków

2012-10-03 21:21

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0

Pierwszy fragment kodu to sposób w jaki wczytywało mi nazwy ze ścieżką. I teraz zamiast tego dałem drugi fragment kodu.
Fakt ten

.ComponentCount-1 

jest trochę bez sensu, ale nie znalazłem nigdzie metodyFiles.Count

 o której piszesz. Prawdopodobnie dlatego, że nie wiedziałem czego szukać.
Poza tym po zmianach:
```delphi
 for i:=0 to openpicturedialog1.Files.Count-1 do
begin
Memo1.Lines.Add(Extractfilename(OpenPictureDialog1.FileName[i]));
end;

do memo dalej trafiają wiersze: pusty,C,pusty,pusty,D (przy wybieraniu wielu plików, przy pojedyńczym pliku dodaje tylko pusty wiersz)


quidquid Latine dictum sit, altum videtur

Pozostało 580 znaków

-123oho
2012-10-03 21:41
-123oho
1
maniutek20 napisał(a):

do memo dalej trafiają wiersze: pusty,C,pusty,pusty,D (przy wybieraniu wielu plików, przy pojedyńczym pliku dodaje tylko pusty wiersz)

Mam dla ciebie złą wiadomość: Tobie nie da się pomoc bo nie potrafisz zrozumieć odpowiedzi.

Pozostało 580 znaków

2012-10-03 21:43

Rejestracja: 15 lat temu

Ostatnio: 1 dzień temu

0

A u mnie działa może napisz dokładnie co robisz od momentu samego wywołania okna dialogowego.

Pozostało 580 znaków

2012-10-03 21:49

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0
-123oho napisał(a):
maniutek20 napisał(a):

do memo dalej trafiają wiersze: pusty,C,pusty,pusty,D (przy wybieraniu wielu plików, przy pojedyńczym pliku dodaje tylko pusty wiersz)

Mam dla ciebie złą wiadomość: Tobie nie da się pomoc bo nie potrafisz zrozumieć odpowiedzi.

No dobra mistrzowie: dział w ktrórym jestem nazywa się NEWBIE, tak?
Piszę w poście: Nie mam zielonego pojęcia jak się do tego zabrać,tak?
Dostaję pierwszą odpowiedź, dla NEWBIE i zupełnie bez pojęcia może być trochę enigmatyczna, tak?

Więc jak dostaję odpowiedź "Tobie nie da się pomoc bo nie potrafisz zrozumieć odpowiedzi", to w głowie mojej rodzi się rada:
Zamknijcie to forum i tą stronę jak nie chcecie mieć do czynienia z ludźmi chcącymi coś zrozumieć i nauczyć się programowania.


quidquid Latine dictum sit, altum videtur

Pozostało 580 znaków

2012-10-03 21:51

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0

@szopenfx
Dzięki za zainteresowanie
Wcześniej mam:

 procedure TForm1.Button2Click(Sender: TObject);
  var
  i:integer;
begin
 if OpenPictureDialog1.Execute then
for i:=0 to openpicturedialog1.Files.Count-1 do
begin
Memo1.Lines.Add(Extractfilename(OpenPictureDialog1.FileName[i]));

end
 end;

quidquid Latine dictum sit, altum videtur

Pozostało 580 znaków

2012-10-03 21:58

Rejestracja: 15 lat temu

Ostatnio: 1 dzień temu

zamiast FileName[i] użyj Files[i]
Filename to nazwa pojedynczego pliku i odwołujesz się do pojedynczej literki jak w twoim kodzie. Na użytkownika -123oho staraj się nie zwracać uwagi to jego "standardowe" podejście

Pozostało 580 znaków

2012-10-03 22:04

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0

Dzięki, samemu bym nad tym siedział do wielkanocy, a nie wiem czy bym na to wpadł.


quidquid Latine dictum sit, altum videtur

Pozostało 580 znaków

-123oho
2012-10-03 22:21
-123oho
0

No dobra mistrzowie: dział w ktrórym jestem nazywa się NEWBIE, tak?

Możesz używać jakiejś przeglądarki która podkreśli ci literówki? Bo coś dużo ich robisz.
Tak, jesteś w dziale Newbie. I?

Piszę w poście: Nie mam zielonego pojęcia jak się do tego zabrać,tak?

Tak, ale widać że jakieś pojęcie masz. Więc kłamiesz.

Dostaję pierwszą odpowiedź, dla NEWBIE i zupełnie bez pojęcia może być trochę enigmatyczna, tak?

Tak, może. I co, czy to znaczy że od razu musisz odpowiedzieć? Ja zazwyczaj gdy dostaję odpowiedź, mimo że NEWBIE (koniecznie wielkimi literami) nie jestem, to dokładnie ANALIZUJĘ, gdy mam jakieś pytania, coś jest niejasne, używam TYPOWEJ reguły: 1. Google 2. TBrain 3. Eksperyment . Taki problem było zrobić to samo? Widać dla ciebie tak!
To jest typowe założenie: Jestem na forum, tu myślą za mnie, więc ja wklejam kod i mówię czy działa czy nie. Natomiast ja się z tym założeniem nie zgadzam.

Więc jak dostaję odpowiedź "Tobie nie da się pomoc bo nie potrafisz zrozumieć odpowiedzi", to w głowie mojej rodzi się rada:
Zamknijcie to forum i tą stronę jak nie chcecie mieć do czynienia z ludźmi chcącymi coś zrozumieć i nauczyć się programowania.

Jeżeli chcesz coś zrozumieć, to MYŚLISZ, nie lecisz na forum.
Dostałeś odpowiedź WYRAŹNĄ! Było że masz użyć Count z Files, nawet jak odwoływać się do elementów! No ale przecież, ty musiałeś WKLEIĆ kod (przy czym dużo się nauczyłeś), stwierdzić że NIE DZIAŁA i pójść płakać na forum, tak?
0% zrozumienia problemu, 100% wklejania gotowców. W takim wypadku rzeczywiście warto zamknąć to forum, bo ludzie nie uczą się programować, a wklejać gotowy kod.

Na użytkownika -123oho staraj się nie zwracać uwagi to jego "standardowe" podejście

Nie rozumiem argumentacji. To że to moje standardowe podejście zmienia zasadność/bezzasadność moich postów?
Zasadność moich postów to w ogóle inna sprawa. To, że ja usiłuję "robić" osoby które są niezależne ode mnie, jest złe. Wy wolicie uzależniać osoby od siebie, tj. poprawmy mu ten kod i czekajmy aż znowu zrobi ten sam błąd. Nie dałeś mu zrozumieć jak działa pętla, nie dałeś mu zrozumieć dlaczego robi źle. Ja niestety stawiam zrozumienie problemu nad jego rozwiązaniem.

bym nad tym siedział do wielkanocy, a nie wiem czy bym na to wpadł.

Cytuję oryginalną odpowiedź, której nie zaakceptowałeś bo według ciebie nie rozwiązuje ona problemu:

ilość plików pobierzesz za pomocą Files.Count, a do konkretnego odwołasz się korzystając z Files[index].

Może mi ktoś wytłumaczyć co tutaj jest takiego trudnego?! Bo ja nie widzę nic, co dla początkującego powinno być trudne.

zamiast FileName[i] użyj Files[i]

Następnym razem proponuję samemu zmienić (mniejsze ryzyko złego zmieniania) i KONIECZNIE guzik skopiuj do schowka, bo inaczej jakaś literka umknie i będzie trzeba dawać jeszcze raz bo przecież tamto nie działa. Ot, taki pomysł jak forum powinno wyglądać żeby było jeszcze bardziej po waszemu.

Pozostało 580 znaków

2012-10-03 22:46

Rejestracja: 8 lat temu

Ostatnio: 1 dzień temu

0

Gościu miły, gościu drogi...

  1. Piszę, że nie wiem jak się do tego(tego konkretnego zagadnienia) zabrać.

  2. Nie insynuuj, że kłamię - to jest poważne oskarżenie i w niektórych kręgach można za takie rzeczy dostać w zęby.

  3. Odpowiadam od razu bo chcę żeby przedmówca wiedział, że nie rozumiem. Bo nie zrozumiałem gdzie tą poradę zastosować.

  4. Twoją "typową" metodę stosuję od soboty, niestety gdy człowiek nie za bardzo wie czego szukać efekty są marne. Nie było to dla mnie problemem. Na forum napisałem prośbę o pomoc tylko dlatego, że kilka dni temu problem dla mnie "nie do przeskoczenia" udało się z pomocą pewnego forumowicza rozwiązać w 10 minut. Zakładałem, że po to jest forum.

  5. Jeżeli chcę coś zrozumieć to nie tylko MYŚLĘ, ale też CZYTAM i PYTAM. Analizując forum 4programmers.net doszedłem do wniosku, że to właściwe miejsce do zadawania pytań. Na forum jestem zarejestrowany od 25 kwietnia 2011 roku, a zaglądam tutaj gdzieś od 2008 - nie lecę więc płakać na forum z każdą pierdołą jak twierdzisz.

Myślę, że metoda "Ja niestety stawiam zrozumienie problemu nad jego rozwiązaniem." w twoim wykonaniu jest beznadziejna.
Nie masz raczej talentu pedagogicznego a twój pierwszy post w tym wątku tego dobitnie dowodzi.

Dla porównania dam ci przykład z innej dziedziny:
Chcesz wydrukować sobie wizytówki w internetowej drukarni, wysyłasz im projekt, a oni jak te barany cały czas odpisują Ci, że miało być 4+0, w euroscale coated i bez trimboxu. Zrozumiałeś? Przecież jasno Ci odpisali


quidquid Latine dictum sit, altum videtur

Pozostało 580 znaków

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