jak wydobyć extractfilename z openpicturedialog.files

jak wydobyć extractfilename z openpicturedialog.files
maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
0

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

Kopiuj
 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:

Kopiuj
 
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
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

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

Kopiuj
memo1.Assign(openpicturedialog1.Files);

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

Kopiuj
OpenPictureDialog1.FileName[i]

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

Kopiuj
.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
maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
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

Kopiuj
.ComponentCount-1 

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

Kopiuj
 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
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.

szopenfx
  • Rejestracja:prawie 21 lat
  • Ostatnio:5 miesięcy
0

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

maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
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
maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
0

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

Kopiuj
 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
szopenfx
  • Rejestracja:prawie 21 lat
  • Ostatnio:5 miesięcy
2

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

maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
0

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


quidquid Latine dictum sit, altum videtur
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.

maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
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
1

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

gościem to jesteś raczej ty, bo ja tutaj jestem od dawna. Natomiast ty masz dwa wątki, osiem postów i jesteś 'starym wyjadaczem'? Super!

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

Możesz pisać co chcesz. Ja się nie czepiam twojego pytania samego w sobie, wykazałeś się tam próbą znalezienia czegoś, mimo że błędnie. Natomiast nie umiesz analizować odpowiedzi i wyciągać z nich wniosków. Zamiast tego od razu odpowiadasz że 'nie działa'.

  1. 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.

Czy ty mi grozisz? Powiedziałem że kłamiesz i nie mam zamiaru się z tego wycofać. A twoje pierniczenie jest co najmniej bezcelowe.

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

W ciągu 15 minut skończyły ci się pomysły? Zdążyłeś użyć googla TBrain i poeksperymentować? Śmiem wątpić.

  1. 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.

Naucz się czytać to co piszę, bo widać masz z tym duży problem. Napisałem że nie stosujesz tego na odpowiedziach. Odpowiedź ma dawać poszlaki do rozwiązania problemu, nie gotowca który wkleisz.
Skoro chcesz problem rozwiązać jak najszybciej to zlecaj napisanie programu za siebie, bo nauka programowania nie jest szybka i łatwa.

  1. 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.

Właśnie lecisz, tylko że ty dalej nie rozumiesz tego, co się do ciebie pisać. Zamiast analizować odpowiedź od razu odpisujesz że nie działa, ale to że nie działa wynika tylko z twojej głupoty i nieumiejętności czytania odpowiedzi. Widać to wcześniej i teraz.
Możesz sobie pierniczyć od kiedy tu zaglądasz, natomiast mało kogo to interesuje. Jesteś NEWBIE i masz poniżej 10 postów, więc to ty dla mnie jesteś gościem, mój drogi.

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.

Myśleć możesz co chcesz, mało mnie obchodzi zdanie jakiegoś NEWBIE (koniecznie dużymi literami). Wiem, że początkującemu jest na rękę wkleić działające rozwiązanie, co pięknie widać. Gdzieś było, że początkujący oczekują że wrzucą wymagania na forum i otrzymania rozwiązania. Czy czegoś się nauczą? Rofl.
Możesz sobie uważać co chcesz, natomiast gdy ja uczę kogoś podstaw programowania to zawsze każę mu pisać programy, do których nie wnikam, tylko podpowiadam. O ile wiem że początkowo się nikomu to nie podoba, bo jest się rzucanym na głęboką wodę, to po paru programach wie się już jak co działa. I przekłada się to również na dobre wyniki osób które się ze mną uczyły programować.
Wolę być wymagającym niż milusim.

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

Gdyby mi się chciało to bym zrozumiał, google mam w przeciwieństwie do ciebie. Ale dla ciebie to by był powód do pytania co to jest X, Y i Z? No przecież... polecę www.google.pl . Zresztą, ja w przeciwieństwie rozróżniam przypadek gdy ktoś mi płaci. Wtedy możesz też sobie wymagać tłumaczenia itd.

maniutek20
  • Rejestracja:prawie 14 lat
  • Ostatnio:4 dni
  • Postów:138
0

Płaci powiadasz? Na ile wyceniasz swoją światłą poradę?


quidquid Latine dictum sit, altum videtur
0
maniutek20 napisał(a):

Płaci powiadasz? Na ile wyceniasz swoją światłą poradę?

Mam ciekawsze rzeczy do roboty niż rozmowa z NEWBIE który sądzi że zna się na wszystkim bardziej niż ja, nazywa mnie gościem mimo że gościem to jest on i grozi mi wybiciem zębów. Pozdrawiam :D

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)