Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 200 201 202 ... 554 555 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | moje ... oprogramowanie |
2018-03-28 (13:34)![]() Data rejestracji: 2006-05-27 Ilość postów: 4979 ![]() | wpis nr 1 157 850 [ CZCIONKA MONOSPACE ] Proste, wystarczyło pomyśleć ![]() ![]() Dziękuję!!! |
2018-03-28 (21:34)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 015 [ CZCIONKA MONOSPACE ] 777ch> Mam nadzieję, że pomożesz rozwiązać problem ![]() Wywołuję procedurę uruchamiającą generator Amadeusa: Sub wywołaj() ile = 100 liczb = 18 skreśleń = 8 sort = 0 link = "e:UsersJaDesktopGeneratorUniwersalnyGenUniw.exe " + Str(ile) + " " + Str(liczb) + " " + Str(skreśleń) + " " + Str(sort) + " e:UsersJaDesktopGeneratorUniwersalnytest.txt" Call Shell(link) End Sub W następnym kroku wczytuję plik test.txt Twoją procedurą i ... w linii: Set objFile = objFSO.OpenTextFile("e:UsersJaDesktopGeneratorUniwersalnytest.txt", ForReading) otrzymuję błąd: "File not exist" co by świadczyło, że generator jeszcze nie utworzył pliku test.txt Potwierdza to fakt, że uruchamiając w pętli procedury wywołaj() i wczytaj() wczytany zostaje plik test.txt utworzony poprzednią procedurą wywołaj(). W sytuacji gdy na starcie plik test.txt jeszcze nie istnieje pojawia się wspomniany błąd. Jak sobie z tym poradzić, czyli sprawić aby procedura wczytaj() startowała dopiero po zapisie przez generator pliku test.txt czyli wczytywał aktualnie utworzony plik test.txt, a nie jego poprzednią wersję? --- wpis edytowano 2018-03-28 21:38 --- |
2018-03-28 (21:38)![]() Data rejestracji: 2017-08-03 Ilość postów: 2112 ![]() | wpis nr 1 158 017 [ CZCIONKA MONOSPACE ] Mam pytanie Czy wie ktoś z Was jaki zestaw maks mógł się dotychczas powtórzyć conajmniej 2krotnie w Multi Multi? mi wychodzi że dwanaście liczb maks-13 już nie. pozdrawiam. |
2018-03-28 (21:48)![]() Data rejestracji: 2016-01-16 Ilość postów: 553 ![]() | wpis nr 1 158 018 [ CZCIONKA MONOSPACE ] fair_play, ja to rozwiązałem w ten sposób, ze pierwszy plik testowy tworzyłem "z buta", potem dopiero było wczytanie z pliku .txt, a w kolejnym kroku plik Amadeusa generował nowe typy, jak w tym samym czasie makro obrabiało mi milionik wczytanych typów. Takie zagranie na zwłokę czasową ![]() |
2018-03-28 (22:44)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 052 [ CZCIONKA MONOSPACE ] fair_play oczywiście w paskalu jest funkcja wbudowana w excelu musisz dodać tę funkcję Function FileExists(FullFileName As String) As Boolean ' returns TRUE if the file exists FileExists = Len(Dir(FullFileName)) > 0 End Function ------------------------------------ przykładowy mój plik... If Not FileExists(ThisWorkbook.Path & "/" & csn & ".txt") Then Set AAA = fs.CreateTextFile(ThisWorkbook.Path & "/" & csn & ".txt", True) Else End If pozdrawiam |
2018-03-28 (23:00)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 063 [ CZCIONKA MONOSPACE ] 777ch> Dziękuję ![]() Ale ten plik w końcu Amadeus utworzy więc chyba potrzebna pętla zwłoki While ? wywołaj Do While Not FileExist ("link") Loop wczytaj Pozdrawiam --- wpis edytowano 2018-03-28 23:01 --- |
2018-03-28 (23:05)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 066 [ CZCIONKA MONOSPACE ] fairplay najprościej zastosuj może FileLen sprawdź MsgBox FileLen("leo10.txt") np If FileLen("leo10.txt") < 1 Then Exit Sub ,albo goto jakiegoś miejsca..... |
2018-03-28 (23:08)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 067 [ CZCIONKA MONOSPACE ] 1 2 53 54 75 46 47 58 79 60 21 62 23 24 45 56 27 28 69 30 31 52 43 74 65 6 67 78 59 10 41 42 13 4 35 36 77 8 29 20 61 12 33 34 5 16 37 48 9 40 11 22 3 44 15 26 17 68 49 50 71 72 63 14 25 76 57 38 19 80 51 32 73 64 55 66 7 18 39 70 tu przykładowo filelen wyniosło 239 w ten sposób z łatwością stwierdzisz że mimo iż plik istniej ..... to nie ma w nim nic.... tak jeśli jest plik ale za mało danych jeszcze w nim ![]() --- wpis edytowano 2018-03-28 23:10 --- |
2018-03-28 (23:27)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 068 [ CZCIONKA MONOSPACE ] Ale FileLen(plik) przy braku pliku wyrzuca błąd File Not Exist. Lepsza chyba funkcja Dir(plik) > "" bo ona nie wyrzuca błędu przy nieistniejącym pliku |
2018-03-28 (23:31)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 069 [ CZCIONKA MONOSPACE ] fair_play to nie możesz najpierw sprawdzić czy istnieje a potem czy ma wystarczająco dużo linni? coś mi tu nie gra,bo Amadeus nie kasował ....chyba pliku |
2018-03-28 (23:34)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 071 [ CZCIONKA MONOSPACE ] If Not FileExists(ThisWorkbook.Path & "/" & csn & ".txt") Then Set AAA = fs.CreateTextFile(ThisWorkbook.Path & "/" & csn & ".txt", True) If FileLen("leo10.txt") < 30 Then goto 1 Else End If End If 1'koniec tak na przykład |
2018-03-28 (23:36)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 072 [ CZCIONKA MONOSPACE ] Amadeus nie kasuje pliku, ale przed kolejnym uruchomieniem "bitwy" są w nim dane z poprzedniej. I teraz jak go wywołam i zaraz po wywołaniu próbuje wczytać to wczytują się poprzednie dane, a nie te które aktualnie tworzy, bo procedura wczytywania startuje za wcześnie. Więc moim zdaniem trzeba najpierw KillFile(plik), a później w pętli While czekać aż nowy plik zostanie zapisany. |
2018-03-28 (23:39)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 074 [ CZCIONKA MONOSPACE ] Function FileExists(FullFileName As String) As Boolean ' returns TRUE if the file exists FileExists = Len(Dir(FullFileName)) > 0 End Function Sub TESTUJ() 1 pobierzHITPLN If Cells(16, 28) < 24 Then GoTo 1 End Sub Sub pobierzHITPLN() ' ' wlasne4 Makro ' Makro zarejestrowane 2009-03-27, autor leo777ch ' Dim nn As Long Dim maxliczB As Long Dim TABDANE() As Variant Arkusz1.Activate If Not FileExists(ThisWorkbook.Path & "/" & "hitpln.txt") Then Set AAA = fs.CreateTextFile(ThisWorkbook.Path & "/" & "hitpln.txt", True) If FileLen("hitpln.txt") < 30 Then GoTo 1 End If Else End If Range("A:k") = "" Range("A:k").Interior.ColorIndex = none nn = Application.WorksheetFunction.CountA(Range("a:a")) Set objFSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1 i = 0 ReDim TABDANE(65536, ![]() Set objFile = objFSO.OpenTextFile(ThisWorkbook.Path & "/" & "hitpln.txt", ForReading) Do Until objFile.AtEndOfStream strLine = objFile.ReadLine arrLine = Split(strLine, " ") TABDANE(i, 0) = arrLine(0) TABDANE(i, 1) = arrLine(1) TABDANE(i, 2) = arrLine(2) TABDANE(i, 3) = arrLine(3) TABDANE(i, 4) = arrLine(4) TABDANE(i, 5) = arrLine(5) TABDANE(i, 6) = arrLine(6) TABDANE(i, 7) = arrLine(7) i = i + 1 ' If i = 65000 Then MsgBox "Ilosc kombinacji 9-ek wynosi aktualnie 65000,przerywam dalsze pobieranie z pliku" If i = 65000 Then GoTo 1 Loop 1 Range(Cells(1, 1), Cells(i + 1, ![]() objFile.Close Cells(2, 1).Select pozpion all_8zysk_PEŁNY 2 End Sub tak ułożyłem i działa bez problemu........ odgap po prostu.jak chcesz |
2018-03-28 (23:41)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 075 [ CZCIONKA MONOSPACE ] zawsze możesz zapisać plik pusty ![]() |
2018-03-28 (23:44)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 077 [ CZCIONKA MONOSPACE ] "tak ułożyłem i działa bez problemu" To tylko sprawdź czy to co masz w TABDANE to to samo co w aktualnie wygenerowanym pliku Amadeusa, czy z poprzedniego ![]() Widzę że: Range(Cells(1, 1), Cells(i + 1,8 ) = TABDANE Więc tylko porównaj je z plikiem. No chyba że Twój procesor jest tak szybki że Amadeus utworzy plik z 1000 (1000000) losowań zanim zaczniesz je wczytywać. --- wpis edytowano 2018-03-28 23:57 --- |
2018-03-29 (00:10)![]() Data rejestracji: 2005-11-07 Ilość postów: 22656 ![]() | wpis nr 1 158 080 [ CZCIONKA MONOSPACE ] fair_play dziś już odpuszczam,bawię się trochę.... ale programikiem w paskalu nie mogę tak skakać od excela do paskala..zwłaszcza po dużej wódce ![]() dobrej nocki jutro znów będzie nowy dzień ![]() a właściwie już dziś ![]() |
2018-03-29 (00:15)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 081 [ CZCIONKA MONOSPACE ] No to dobranoc ![]() |
2018-03-29 (11:21)![]() Data rejestracji: 2006-05-27 Ilość postów: 4979 ![]() | wpis nr 1 158 125 [ CZCIONKA MONOSPACE ] fair_play napisał cyt. "bo procedura wczytywania startuje za wcześnie. " Mam chyba tak samo u siebie. Makro 'sprawdź' działające w pętli czasami potrafi się wywalić. Wygląda to tak, jakby plik z Amadeusa był niepełny, tak jakby Amadeus nie nadążał z "produkcją" nowych zestawów za makrem. Rozwiązaniem w moim przypadku okazało się ( to nie żart ), uruchomienie w tle WG ![]() ![]() |
2018-03-29 (12:26)![]() Data rejestracji: 2006-05-27 Ilość postów: 4979 ![]() | wpis nr 1 158 144 [ CZCIONKA MONOSPACE ] fair_play, wiem. Dlatego zasugerowałem cyt. " Ale jakby fachowcy z forum "poczuli melodię" ![]() ![]() |
2018-03-29 (12:32)![]() Data rejestracji: 2016-05-12 Ilość postów: 8710 ![]() | wpis nr 1 158 147 [ CZCIONKA MONOSPACE ] kleszek> "Zastanawiam się, czy nie lepszym rozwiązaniem byłoby, tak jak ktoś wcześniej zasugerował, wygenerowanie Amadeusem jednego pliku .txt z milionem zestawów i pobieranie ich do arkusza paczkami po 1000 zestawów." Tyle że procedura wczytująca kolegi 777ch: Do Until objFile.AtEndOfStream a więc wczytuje do końca pliku a nie w paczkach np. po 1000. Rzeczywiście Amadeus nie nadąża za programem, więc pomiędzy wywołaj(), a wczytaj() potrzebna jest zwłoka. Jaka długa ? To trzeba wyliczyć ![]() wielkość pliku txt = losowań * (3 * trafień + 1) = 1000*(3*8+1)=25000 I trzeba zastosować zwłokę: wywołaj() Do while FileLen(plik)<długość Loop wczytaj() Działa bez zarzutu bez uruchamiania WG ![]() P.S. Jak wyczyścisz buciki, to może zając podrzuci Ci jakiś upgrade ![]() --- wpis edytowano 2018-03-29 12:37 --- |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 200 201 202 ... 554 555 Wyślij wiadomość do admina |