składnia funkcji MID mam sobie trochę kodu, w którym jest błąd poniżej zaznaczony na czerwono:'rozdzielamy dane w Label na poszczegolne skladniki i zapisujemy je do tablicyDim DoDruku(10) As StringDim Dane As StringDim odPOZ, ileVBCRLFodPOZ = 1ileVBCRLF = 0Dane = Form1.lblOdsetki2.CaptionFor a = 1 To 10ileVBCRLF = InStr(odPOZ, Dane, vbCrLf) 'szukaj VBcrlfDoDruku(a) = Mid(Dane, odPOZ, ileVBCRLF - odPOZ) ' wytnij odPOZ = ileVBCRLF + 2Next apodczas działania wyskakuje błąd o treści:Runtime '5':Invalid procedure Call or argumentnie ma tam przecież żandego Call, jest jednak to odejmowanie i to chyba ono jest winne...nie jestem pewien ale wiem, że bez tego odejmowania MID działa tylko nie tak jak trzeba...może mi ktoś powiedzieć gdzie jest błąd, dlaczego tak nie może być i podać rozwiąznie, aby efekt działania był taki sam.
16-05-2003 22:16
Jelcyn Admin forum
Typ: admin Postów: 895 Zarejestrowany: Apr 2002
możeileVBCRLF - odPOZw którymś tam momencie jest mniejsze od zera ?? _____________________________________________Jelcyn vb4all(małpka)canpol.pl http://vb4all.canpol.pl * http://www.jelcyn.com
16-05-2003 22:25
270849979
6237704
AFRO
Typ: neutral Postów: 60 Zarejestrowany: Mar 2003
ok, bardzo możliwe, ale nie rozpatrywałem tego bardzo dogłębnie......ten kod źródłowy to leciutko zmieniony kod napisany mi ostatnio w odpowiedzi na posta przez Knight Lore''FC i on sądził, że to ma służyć chyba do usunięcia vbcrlf'ów.Potrzebne mi to jest do tego, aby przesunąć CAŁY CAPTION Label'a na drukowanej stronie o określoną wartość w pixelach na boki lub w dół zależy co wpiszę.Zaznaczam, że Caption Label1 ma 10 vbcrlf, po 1 wpisanym po jednym słowie:mama & vbcrlfbabcia & vbcrlfciocia & vbcrlfitd...a po przesunięciu jednej lini wyglądałoby to po wydruku tak: mamababciaciociado tego wyżej użyłem kodu:X=300Y=200For a=0 to 10 Y=Y+250 'ten skok zalezy od uzytej czcionki Printer.CurrentX = X Printer.CurrentY = Y Printer.Print Tablica(a)Next aA potem Knight Lore''FC napisał mi emalią, że aby zrobić przesunięcie całego Label, należy:'rozdzielamy dane w Label na poszczegolne skladniki i zapisujemy je do tablicyDim DoDruku(10) As StringDim Dane As StringodPOZ = 1ileVBCRLF = 0Dane = Form1.Label1.Caption 'przepisyjemy dane z Label do zmiennej Dane 'szukamy 10 czesciFor a = 1 To 10 ileVBCRLF = InStr(odPOZ, Dane, vbCrLf) ' szukaj znaku VBCLRF - a tak na prawde to chr$(13)+chr$(10) DoDruku(a) = Mid$(Dane, odPOZ, ileVBCRLF - odPOZ) ' wytnij odPOZ = ileVBCRLF + 2Next a 'teraz dane mamy w tablicy'no to drukujemy opisana juz przedtem metoda X=300Y=200For a=1 to 10 Y=Y+250 'ten skok zalezy od uzytej czcionki Printer.CurrentX = X Printer.CurrentY = Y Printer.Print DoDruku(a)Next ai to miało tak zrobić, ale wyskakuje ten cholerny błąd - jak masz jakieś inne rozwiązanie to podziel się wiedzą, nara
16-05-2003 22:42
losmac "profesorek"
Typ: neutral Postów: 758 Zarejestrowany: May 2003
Mid() Funkcja Mid, jak wiesz, zwraca odpowiednią ilość znaków z określonego ciągu znaków, lub zastępuje odpowiednią ilość znaków.Myślę, że problem, który tu poruszasz, polega na tym, że dajesz odczyt w pętli od 1 do 10. A skąd możesz wiedzić ile jest znaków vbcrlf w tej etykiecie?Lepiej użyj pętli do-loop lub while. Podobny problem pokazywałem już kiedyś pod adresem: http://losmac.republika.pl/uniwersalne/uniwersalne.html patrz przykład 1 lub 2. _____________________________________________POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś
17-05-2003 09:57
AFRO
Typ: neutral Postów: 60 Zarejestrowany: Mar 2003
szybko... ...obierz pocztę ze skrzynki - dostaleś ode mnie emalie - dość dlugą i nie chciało mi się pisać:proszę o pomoc...afro
17-05-2003 18:25
Knight Lore''FC
Typ: neutral Postów: 240 Zarejestrowany: Jan 2003
Nie wiem w czym tu jest problem...Przeciez to dziala prawidlowo !... sam sprawdzilem i drukuje tak jak chciales !Zrob tak:na formie umiesc 1 Label i 2 CommandButtondo Command1 przypisz to:Private Sub Command1_Click()Label1.Caption = "mama" & vbCrLfLabel1.Caption = Label1.Caption & "tata" & vbCrLfLabel1.Caption = Label1.Caption & "babcia" & vbCrLfLabel1.Caption = Label1.Caption & "dziadek" & vbCrLfLabel1.Caption = Label1.Caption & "siostra" & vbCrLfLabel1.Caption = Label1.Caption & "kolega" & vbCrLfLabel1.Caption = Label1.Caption & "Rafal" & vbCrLfLabel1.Caption = Label1.Caption & "Marcin" & vbCrLfLabel1.Caption = Label1.Caption & "Jacek" & vbCrLfLabel1.Caption = Label1.Caption & "Tomek" & vbCrLfEnd Subdo Command2 to :Private Sub Command2_Click()Dim DoDruku(10) As StringDim Dane As StringodPOZ = 1ileVBCRLF = 0Dane = Form1.Label1.Caption 'przepisyjemy dane z Label do zmiennej Dane'szukamy 10 czesciFor a = 1 To 10 ileVBCRLF = InStr(odPOZ, Dane, vbCrLf) ' szukaj znaku VBCLRF - a tak na prawde to chr$(13)+chr$(10) DoDruku(a) = Mid$(Dane, odPOZ, ileVBCRLF - odPOZ) ' wytnij odPOZ = ileVBCRLF + 2Next a'teraz dane mamy w tablicy'no to drukujemy opisana juz przedtem metodaX = 2300 'to jest przesuniecie w poziomieY = 200 'a to w pionieFor a = 1 To 10 Y = Y + 250 'ten skok zalezy od uzytej czcionki Printer.CurrentX = X Printer.CurrentY = Y Printer.Print DoDruku(a)Next aPrinter.EndDocEnd SubTeraz uruchom programKliknij w Command1 - zostanie zbudowane LABELKliknij w Command2 - i zostanie wydrukowane w kolumnie !losmacMyślę, że problem, który tu poruszasz, polega na tym, że dajesz odczyt w pętli od 1 do 10. A skąd możesz wiedzić ile jest znaków vbcrlf w tej etykiecie?przeciez AFRO pisze : Zaznaczam, że Caption Label1 ma 10 vbcrlf, po 1 wpisanym po jednym słowie
19-05-2003 09:54
1065423
AFRO
Typ: neutral Postów: 60 Zarejestrowany: Mar 2003
Wielce wdzięczny Ci jestem......sorry, za te e-malie, że są błędy...ale przez przypadek miałem cos gdzieś źle wpisane......wybacz, ale alles ist sehr Gut - danke schon
19-05-2003 13:04
losmac "profesorek"
Typ: neutral Postów: 758 Zarejestrowany: May 2003
Widzę, że ktoś już mnie uprzedził... U mnie ten kod chodzi bez zarzutu, w takiej postaci, w jakiej jest. Drukujerównież jedno pod drugim.Myślę, że problem może tkwić w sterownikach drukarki.Spróbuj z inną drukarką lub na innym kompie.Innym rozwiązaniem może być zapisanie tych danych do pliku tekstowego (np.: abc.txt) i wywołanie funkcji Shell w następujacy sposób: Shell("C:\Windows\Notepad.exe /p abc.txt",0). ...obierz pocztę ze skrzynki - dostaleś ode mnie emalie - dość dlugą i nie chciało mi się pisać:proszę o pomoc...afro _____________________________________________POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś
19-05-2003 22:21
Knight Lore''FC
Typ: neutral Postów: 240 Zarejestrowany: Jan 2003
Wersja uproszczona (pod VB6)Private Sub Command1_Click()Label1.Caption = "mama" & vbCrLfLabel1.Caption = Label1.Caption & "tata" & vbCrLfLabel1.Caption = Label1.Caption & "babcia" & vbCrLfLabel1.Caption = Label1.Caption & "dziadek" & vbCrLfLabel1.Caption = Label1.Caption & "siostra" & vbCrLfLabel1.Caption = Label1.Caption & "kolega" & vbCrLfLabel1.Caption = Label1.Caption & "Rafal" & vbCrLfLabel1.Caption = Label1.Caption & "Marcin" & vbCrLfLabel1.Caption = Label1.Caption & "Jacek" & vbCrLfLabel1.Caption = Label1.Caption & "Tomek" & vbCrLfEnd SubPrivate Sub Command2_Click()Dim Dane As StringDim Wczytano As IntegerDane = Form1.Label1.Caption 'przepisyjemy dane z Label do zmiennej Dane'rozdzielamy na skladniki i zapisujemy w tablicy DoDrukuDoDruku = Split(Dane, vbCrLf)'okreslamy jaki jest Max rozmiar tablicyWczytano = UBound(DoDruku)'teraz dane mamy w tablicy'no to drukujemy opisana juz przedtem metodaX = 2300 'to jest przesuniecie w poziomieY = 200 'a to w pionieFor a = 0 To Wczytano Y = Y + 250 'ten skok zalezy od uzytej czcionki Printer.CurrentX = X Printer.CurrentY = Y Printer.Print DoDruku(a)Next aPrinter.EndDocEnd Sub
26-05-2003 11:17
1065423
Wszystkich odpowiedzi: 8 :: Maxymalnie na stronę: 20