57162 1







Strona: [  >  ]  z  1     









Autor
Temat: składnia funkcji MID











AFRO


Typ:
neutral
Postów: 60
Zarejestrowany: Mar 2003




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










Strona: [  >  ]  z  1     









Wyszukiwarka