Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 200 201 202 ... 554 555
Wyślij wiadomość do admina

Przewiń wpisy ↓

moje ... oprogramowanie

2018-03-28 (13:34)

status kleszek
Data rejestracji: 2006-05-27
Ilość postów: 4979

2047
wpis nr 1 157 850
[ CZCIONKA MONOSPACE ]

Proste, wystarczyło pomyśleć

Dziękuję!!!

2018-03-28 (21:34)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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)

status qbam
Data rejestracji: 2017-08-03
Ilość postów: 2112

15384
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)

status MLRandom
Data rejestracji: 2016-01-16
Ilość postów: 553

14699
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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, ) = TABDANE

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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
wpis nr 1 158 075
[ CZCIONKA MONOSPACE ]

zawsze możesz zapisać plik pusty
2018-03-28 (23:44)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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)

status 777ch
Data rejestracji: 2005-11-07
Ilość postów: 22656

1386
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)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
wpis nr 1 158 081
[ CZCIONKA MONOSPACE ]

No to dobranoc
2018-03-29 (11:21)

status kleszek
Data rejestracji: 2006-05-27
Ilość postów: 4979

2047
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 Prawdopodobnie procesor komputera rozdzielając swoje zasoby na kilka procesów, działa nieco wolniej, wystarczająco wolniej do tego, aby Amadeus wykonał bezproblemowo swoje zadanie. 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. Rozwiązało by to problem z "zatykającym" się programem. Nie znam się na tym, ale chyba pobieranie danych z tablic przyśpieszyło by działanie makra. Miało by to jeszcze jeden walor. Mając wygenerowany taki jeden plik z zestawami, można by testować różne systemy na dokładnie tych samych danych. Niestety, stworzenie takiej procedury to za wysokie progi jak na moje możliwości. Ale jakby fachowcy z forum "poczuli melodię" , to sądzę, że coś takiego zrobili by bez problemu. To byłby chyba najlepszy sposób na pobieranie danych z Amadeusa do obliczęń.
2018-03-29 (12:26)

status kleszek
Data rejestracji: 2006-05-27
Ilość postów: 4979

2047
wpis nr 1 158 144
[ CZCIONKA MONOSPACE ]

fair_play, wiem. Dlatego zasugerowałem cyt. " Ale jakby fachowcy z forum "poczuli melodię" , to sądzę, że coś takiego zrobili by bez problemu. Bo, cyt. "Niestety, stworzenie takiej procedury to za wysokie progi jak na moje możliwości.
2018-03-29 (12:32)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 8710

14865
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 lottoStrona: 1 2 ... 200 201 202 ... 554 555
Wyślij wiadomość do admina