QQQromaneq [ Konsul ]
Visual Basic - Pilne
jak zapisać polecenie otwarcia pliku txt o dowolnej nazwie w folderze w którym jesteśmy ( wiem że się da bo to zrobiłem niestety mam już tylko plik skompilowany do exe i nie pamiętam JAK to zrobiłem ;( ( ew. jak / czym podglądnąć skompilowany plik aby było widać kod źródłowy ) ?
legrooch [ MPO Squad Member ]
Dim streamReader as new Streamreader("plik.txt")
resztę czytania masz w snippetach (po znaku/linii/całości).
Wpisz zresztą streamreader w google i wejdź na stronę MS. Masz tam gotowy przykład....
QQQromaneq [ Konsul ]
hmm chyba niezbyt jasno wytłumaczyłem o co mi chodzi - idzie mianowicie o to aby program umieszczony w danym folderze otwierał znajdujący się w nim plik txt z tym ze ten plik może mieć dowolna nazwę. O ile pamiętam zrobiłem to w jakiś banalnie prosty sposób ( raczej raczkuje w VB ) typu open "*.txt" - niestety wygląda na to ze VB nie uwzględnia znaków specjalnych typu *
streamreader - to na razie dla mnie czarna magia ( chyba że możesz to jakoś prościej wytłumaczyć najlepiej z przykładem - z góry thx
legrooch [ MPO Squad Member ]
Podeślij ten gotowy program na mójnick małpa o2 kropka pl.
Coś czarujesz. Albo program otwiera wszystkie pliki w katalogu, albo mu podajesz nazwę.
Otworzyć plik można w najprostszy sposób streamreaderem. Bardziej prościej się nie da. Sam się nie otworzy. Podeślij program, to Ci pomogę go napisać od zera.
QQQromaneq [ Konsul ]
poszło na maila- thx
legrooch [ MPO Squad Member ]
romaneq ==> @
QQQromaneq [ Konsul ]
poszło ponownie
legrooch [ MPO Squad Member ]
Romaneq ==> Przeczytaj BARDZO dokładnie, co Ci któryś raz z rzędu napisałem.
legrooch [ MPO Squad Member ]
Romaneq ==> Odpisz mi na maila, jutro Ci zrobię zabawkę :)
QQQromaneq [ Konsul ]
ok- czekam
QQQromaneq [ Konsul ]
a jeszcze takie pytanko - jak z poziomy VB odpalić konkretny mp3 ( plik jest w windzie powiązany z playerem mp3 wiec VB nie musi umieć go odtwarzać a jedynie odpalić zewnętrzny program a w nim zadana mp3 )
legrooch [ MPO Squad Member ]
Mam poślizg z Twoją robotą, bo dzień straszny.
Tu masz odgrywanie w VB6
Edit:
Lepszy link -
QQQromaneq [ Konsul ]
jesteś szybszy od światła ;) - to jest niezłe ale niekoniecznie chciałem to robić bezpośrednio z poziom VB - myślałem o prostszym ( moim zdaniem ) uruchomieniu zewnętrznej aplikacji aby odtworzyła dany plik - da się tak ?
QQQromaneq [ Konsul ]
hmm - w sumie świetne - nie sadziłem że MS daje darmowe kontrolki do mp3 ( w mojej pierwszej wersji VC tego nie było ;) ) - niby wszystko działa ok ale wyszedł inny problem tzn kontrolka chyba domyślnie zabiera focusa bo nagle przestało mi działać przełączanie dzień/noc - jak zrobię button star/stop niewidocznym dzień/noc działa ok ale nie odtwarza a jak odtwarza to nie reaguje na naciśniecia innych klawiszy ( tylko spacja ) - jak temu zaradzić ?
legrooch [ MPO Squad Member ]
Focus Ci gubi na 99% przez uruchomienie elementu.
Ustaw go tam, gdzie chcesz :)Np. Na form.
QQQromaneq [ Konsul ]
to nie była wina focusa - po prostu ten program wchodził w nieskończoną pętle ( czekał na naciśnięcie play / stop ) nic dziwnego w sumie on TYLKO do tego służył ;) - ale to pestka -
THX za pomoc ( został tylko problem nr.4 z tym komunikatem o błędzie
Confligting names were found - The name Form1 will be used
co jest o tyle ciekawe ze ja otwieram projekt i tylko projekt wiec Gdzie jest w użyciu ?
co z tym zrobić ?
legrooch [ MPO Squad Member ]
Gdzieś masz zdublowaną deklarację zmiennej formularza. Musisz poszukać, gdzie deklarowałeś go drugi raz.
QQQromaneq [ Konsul ]
ciekawe to bo nie deklaruje zwykłych zmiennych ( w sumie program robi to sam ) tylko takie które są mi niezbędne - a już NIGDY nie deklaruje formy ( jeśli myślimy o tym samym czyli o DIM)
Dim dint, FS, n, m - to wszystko co zdeklarowałem
hmm - kumpel zażyczył sobie aby mógł tez wyświetlać txt utworu / na zmianę z akordami - właśnie zastanawiam się jak do tego podejść i wymyśliłem takie opcje
1. nowa forma wywoływana ze starej z możliwością powrotu do starej ( bo zmiana labeli na niewidoczne i dodawanie nowych to syzyfowa praca ) - anie nie bardzo wiem jak się za to zabrać
2. skalowalne okno graficzne zakrywające formę - wydaje się prostsze i chyba bardziej uniwersalne ale plik z tekstem utworu trzeba będzie przygotować jako obraz
jakieś inne pomysły ?
legrooch [ MPO Squad Member ]
Form jest jednocześnie modułem o ile dobrze pamiętam (klasa itp tematyka).
Gdzieś musi być podwójnie deklarowany. Może w pliku rozszerzeń?
1) Co rozumiesz jako "na zmianę"? Raz akordy, później tekst? Czy same akordy, sam tekst?
2) Daj znać z pierwszym najpierw :)
QQQromaneq [ Konsul ]
na zmianę rozumiem że np. wciśniecie klawisza t spowoduje wyświetlenie txt na akordach a potem wciśniecie a powrót do akordów ( na razie testuje sposób z jednym dodatkowym labelem w którym będzie tekst - jak utknę będę pytał :)
co do błędu - masz kod źródłowy w przykładzie 2 jaki Ci wysłałem ( u mnie tam też zgłasza błąd - sam zobacz czy tam coś deklarowałem - ja nic o tym nie wiem
legrooch [ MPO Squad Member ]
Utwórz nowy projekt w VB, dodaj do niego plik Form 008.frm i wtedy skompiluj :) Powinno pomóc.
Nie mam jak otworzyć twojego projektu z braku kompilatora i środowiska. Mogę jedynie notatnikiem grzebać. Ale coś wskazuje na problem w projekcie, a konkretnie zawartość pliku vbp/vbw.
QQQromaneq [ Konsul ]
przy dodawaniu do nowego projektu starej formy - znów komunikat o błędzie
QQQromaneq [ Konsul ]
zmieniłem nazwę formy na form2 i komunikat zniknął
następujący problem - Mimo zadeklarowania zmiennej Dim a - po odświeżeniu formy form2.refresh zmienna nie jest widoczna dla funkcji na formie ( innymi słowy - zmienna zadeklarowana i użyta w sub formy jest widziane w innych sub ( tak jak powinno być ) a zmienna zadeklarowana i użyta ( w sensie zmiany jej wartości ) w innym sub nie jest widziana w sub formy po wykonaniu form.refresh ( czyli jak rozumiem form.refresh to TYLKO przerysowanie formy a nie ponowne wykonanie kodu zawartego w sub formy - co więc zrobić aby ponownie wykonać kod zawarty w sub formy ?
BTW - masz może konto na ?
legrooch [ MPO Squad Member ]
QQQ ==> Sub - procedura :) łatwiej jest zrozumieć zapis Twój :)
Gdzie deklarujesz dokładnie a? W module czy w procedurze/funkcji?
Zobacz opis dla deklaracji privet/public. Coś albo Ci ją przesłania, albo masz ją dziwnie przedeklarowujesz.Widzisz, nie mam wolnej maszyny, którą mógłbym uraczyć Visual Studio z VB6.
Ale obawiam się, że refresh generuje (przerenderowuje) cały formularz. Poza zmiennymi, które ma ustawione reszta jest tworzona od zera. W teorii tak to powinno działać.
Edit:
Konta na coderscity nei mam.
QQQromaneq [ Konsul ]
hmm - deklaruje jeden DIM na samym początku programu ( to chyba w module skoro sub to procedura ;) ja pisze raczej proste programiki więc to mi zawsze wystarczało - nigdy nie miałem problemu z "widzeniem zmiennych"
piszesz ze refresh przerenderowuje cały formularza poza zmiennymi - a co jak właśnie zmienna się zmieniła - co zrobić aby to uwzględnił ?
innymi słowy wracam ciągle do tego samego pytania:
jak wywołać ponowne wykonanie kodu zawartego w procedurze formularza z uwzględnieniem innych wartości zmiennych ?????
i czy to wogóle możliwe czy trzeba szukać innej drogi
legrooch [ MPO Squad Member ]
Zrób tak:
W VS postaw breakpointa na ładowaniu się formularza. Odpal (F5) program i kliknij na refresh.
W kodzie powinien Ci się breakpoint dodatkowo podświetlić na żółto. Teraz możesz przeczytać (najechanie myszą powinno działać), co zawiera która zmienna. Jeżeli okazuje się, że gdzieś coś nie tu zadeklarowałeś, to będziesz widzieć nową wartość jakiejś zmiennej lub jej brak. Np a będzie się równało "Nothing", a powinno odziedzić wartość poprzednią.
PS Podeślij kod. Może coś optycznie wyłapię.
QQQromaneq [ Konsul ]
ij zaraz podeśle kod - a co z ponownym wykonaniem kodu formularza ? da się to jakoś zrobić ? ( w starym basicu była cudowna instrukcja GoTo - i już program robił to co chciałem :)
legrooch [ MPO Squad Member ]
Goto jest w .net, wieć i vb6 powinno je mieć. Ale tak się nie pisze softu :)
QQQromaneq [ Konsul ]
pewnie tak - ale w awaryjnej sytuacji ;) ( w VB jest chyba DoTo ale nie do linii jak w Basicu bo nie ma lini tylko do label- czyli co mam se wstawic np. linie skocztu a potem dać GoTo skocztu ?
BTW. nie przujmuj sie dodatkowym kodem w procedurze naciskania klawisza ( to tylko moze próby ustalenia co sie dzieje ze znienna "jas " - sam czysty kod powinie byc taki:
If KeyAscii = 49 Then
If zj > -2 Then zj = zj - 1
Form2.Refresh
----------------------------------------------------------------------------------------------------------
Instrukcja GoTo powoduje przekazanie sterowania do linii programu wewnątrz procedury.
Składnia rozkazu GoTo:
GoTo Linia
Argument Linia może być etykietą linii albo numerem linii.
Instrukcja GoTo może wykonywać skoki wewnątrz procedury, w której zostanie użyta.
Zbyt dużo instrukcji GoTo może uczynić kod programu nieczytelny i trydny do usuwania błędów.
----------------------------------------------------------------------------------------------------------
czyli jest i goto i gosub ale nie wiem ja to wyołac - możesz podać konkretny przykład kodu z rozkazem goto ( nie rozumiem Goto linia ( jak kurna linia ? )
zrobiłem jak pisałeś w mailu - przy debugowaniu ( kiedyś to już robiłem teraz sobie przypominam ) program wykonuje procedurę naciśnięcia klawisza i TYLE - refresh - w umie NIC nie robi i program NIE WRACA do procedury formularza - wiec nic dziwnego że zmienne się nie zmieniają - tak więc pozostaje pytanie:
JAK PONOWNIE WYWOŁAĆ PROCEDUR FORMULARZA ? - tzn ponowne wykonanie kodu ( nie refresh )
legrooch [ MPO Squad Member ]
Odbierz pocztę.
QQQromaneq [ Konsul ]
zrobiłem jak pisałeś w mailu - przy debugowaniu ( kiedyś to już robiłem teraz sobie przypominam ) program wykonuje procedurę naciśnięcia klawisza i TYLE - refresh - w umie NIC nie robi i program NIE WRACA do procedury formularza - wiec nic dziwnego że zmienne się nie zmieniają - tak więc pozostaje pytanie:
JAK PONOWNIE WYWOŁAĆ PROCEDUR FORMULARZA ? - tzn ponowne wykonanie kodu ( nie refresh )
legrooch [ MPO Squad Member ]
Zamień na Form2.Refresh form_load()
QQQromaneq [ Konsul ]
Form2.Refresh Form_Load() - expected function or variable ( wywala sie )
QQQromaneq [ Konsul ]
ok - takie prośby :
1.najprostszy przykład kawałka kodu wykorzystującego instrukcję Goto
2.najprostszy przykład kawałka kodu wykorzystującego ponowne wykonanie kodu formy
3. kod ascii dla strzałek kierunkowych ;)
( jeśli można to bez deklaracji typu zmiennych w nazwach - po prostu zmienne a, b, c itd )
z góry THX ;)
legrooch [ MPO Squad Member ]
Google Twoim przyjacielem :)
1)
2) opiszę Ci coś zaraz mailem - zrób to tak i będzie porządnie
3)
QQQromaneq [ Konsul ]
OK lukam a tu jest przykład :
Dim z
Private Sub Form_Load()
z = "A" + y
Label1.Caption = z
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then y = "B"
End Sub
po naciśnięciu klawisza spacji powinno A zamienić się na B ( ale nie działa bo " Label1.Caption = z" nie jest ponownie wykonywany - rozkaz goto nie da rady bo działa tylko wewnątrz procedury ) więc jak ?
QQQromaneq [ Konsul ]
hmmm - od 18 postów usiłuje się tego dowiedzieć a odpowiedź jest banalna = aby wywołać zewnętrzną procedurę należy prostu użyć instrukcji " Call" - i to wszystko co potrzebowałem - problem polega na tym że mówisz do mnie jak do programisty a nie jak do laika - to co dla Ciebie jest oczywiste dla mnie to często poza zasięgiem - THX za pomoc - pewnie się tu jeszcze odezwę
To co napisałeś w mailu jest coll pomysł ale jednak dla mnie trudny:
oto odpowiedź:
Dim y
Private Sub Form_Load()
z = y
Label1.Caption = z
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then y = "B"
Call Form_Load
End Sub
PILNE : jaki jest kod ascii dla strzałek kierunkowych ?
legrooch [ MPO Squad Member ]
QQQ ==> Zboczenie zawodowe, sorki :) Na ogół osoby, które wymyśliły tak pokręcony program wiedzą 100 razy więcej od Ciebie (bez urazy - komplement), dlateog używałem takiego słownictwa :)
Strzałki kierunkowe masz w poście [35], podpunkt 3 :]
QQQromaneq [ Konsul ]
dzięki za uznanie ;) - tak to jest z samoukami czasem sporo potrafią zrobić ale tylko tym swoim pokręconym sposobem ;)
BTW - te kody ascii to chyba są te jak chcesz otrzymać znaki specjalne - ja potrzebuje tych od klawiszy kierunkowych sprawdzałem 16/17 ; 26/27 - nie działa ;( ( przecież to nie są jakieś specjalne klawisze - klawisz to klawisz - a nie chce mi się pisać kodu sprawdzającego naciśniety klawisz - sam mam swoja tablice ascii ale nie wiem gdzie są strzałki kierunkowe )
Private Sub Form_KeyPress(KeyAscii As Integer)
a = KeyAscii
Label1.Caption = a
End Sub
przy naciśnieciu strzałek NIC nie wychodzi
hmm nie wiem czy one nie są czasem zapisywane jako dwubajtowe ;(
legrooch [ MPO Squad Member ]
Rzuć okiem tu.
Używają tam obsługi przycisków
QQQromaneq [ Konsul ]
thx - przegryzę się i zastosuje u siebie
QQQromaneq [ Konsul ]
KeyCode - super pomysł na sterowanie dowolnymi klawiszami z tej strony co podesłałeś ( If KeyCode = X Then - prościej już się chyba nie da )
szybkie pytanko - najprostszy sposób na wywołanie krótkiego dźwięku ( poza beep ) - w starym basicu było coś takiego jak sound x,y ( wysokość tonu , czas trwania ) - jest tu może coś podobnego ?
legrooch [ MPO Squad Member ]
Pytasz się mnie o coś, czego na oczy nie widziałem w 99,99% :)
Ale raczej nie będzie. Ten język jest inaczej zbudowany niż Basic znany z Atari :)
Tu masz właściwości obiektów, którymi sterujesz. Zresztą tony w Basicu wychodziły jako sample.