Problem z czytaniem z pliku CześćPomocy !!!!!!!!!!!!Mam problem z plikiem tekstowym i nie wiem dlaczego.Otwieram plik tekstowy Open ....i tak dalej to wszystko działa,przypisuje zawartość pliku do kontrolki listbox i wszystko jest OK. Zamykam plik Close ...I teraz w czasie działania programu otwieram plik, przypisuje do listboxa, potem użytkownik powoduje dodanie wpisu do pliku tekstowego przy pomocy funkcji API. Co niesie za sobą konieczność odświeżenia zawartość listboxa. Ponowne wywołanie procedury Open ... (operacje otwarcia pliku i przypisania) nie powoduje zmiany w kontrolce Listbox. Tak jakby tego ostatniego wpisu wogóle nie było. A na 100% wpis nastąpił.To tak jakby program pamiętał tylko pierwszą zawartość pliku txt.Ponowne uruchomienie programu powoduje przypisanie całej zawartości pliku txt a potem znów to samo.Dzięki za jakąkolwiek pomoc
18-01-2004 18:51
busio busio
Typ: neutral Postów: 98 Zarejestrowany: Sep 2002
Witam1. Wyjaśnij czy Ty i użytkownik to ta sama osoba, czy do operacji na pliku używaja tego samego programu. 2. Czy jesteś pewien, iż plik po zapisie został zamknięty? (Na wszelki wypadek zamknij programy i ponownie otwórz ten z listboxem i wtedy sprawdz)3. Przepraszam ze głupio spytam , ale jesteś pewien ze to ten sam plik? Kiedyś mialem przypadek iz w wersji sieciowej programu dwaj uzytkownicy pisali do pliku *.ini znajdującego się w katalogu instalacji i tych zmian nie widzieli wzajemnie i nie mogli zobaczyć bo wspólna była baza danych a program posadzony lokalnie.4. Czemu do pisania w txt uzywasz API skoro VB ma bardzo wygodne narzędzia i co najważniejsze sprawdzone.5. API ma w zwyczaju zwracać rezultat swej pracy więc sprawdź czy nie zwrócila Ci błęduPozdrawiam busio
18-01-2004 21:02
anonim
Typ: Nie zarejestrowany
Dzięki za reakcję1 Powinienem dokładniej opisać. To jest jeden pogram użytkownik to ja, i używam tylko tego programu.2 Zamykam go Close ... po otwarciu i przypisaniu do listboxa (czy po zapisie funkcją API WritePrivateProfileString trzeba jakoś zamknąć plik?)3 To jest program który nie będzie działał w sieci, a pliczek txt znajduje sie w tym samym katalogu co pliki projektu4 Wiem że to nie jest najszczęśliwszy pomysł. Wykożystując API mam dostęp do potrzebnej sekcji nie przeszukując pliku. W zależności od wybranej opcji (przycisku) program przypisując do zmiennej odpowiednią nazwę sekcji (zczytuje więc odpowiednie linijki z pliku, plik txt jest jakby sterujący dla programu, zawarte w nim informacje ustawiają odpowiednie właściwości całego programu, zawiera ścieszki do plików mdb itp.)5 Niestety Vb nie był tak łaskawy aby zwrócić jakikolwiek błąd (obsługa też nie pomaga)Starałem się dokładnie opisać i zależy mi aby ta funkcja API do zapisu została. Można by spróbować może przy pomocy API zczytać zawartość pliku ale nie bardzo mi to idzieDzieki czekam na dalszą pomoc
18-01-2004 22:35
busio busio
Typ: neutral Postów: 98 Zarejestrowany: Sep 2002
WitamWykorzystywana przez Ciebie funkcja nie wymaga zamykania i otwierania plików.Po dodaniu przez API wpisu sprawdz poprzez GetPrivateProfileString czy zapis rzeczywiści jest.Jeśli jest to zamknij i otwórz program, jesli wtedy zaczyta wszystko to znaczy iz trzymasz plik.Jeśli chcesz chętnie spojrzę na kod i powiem wtedy co robisz źle bo ja wielokrotnie stosuje te funkcje i nie mam problemów.Pozdrawiam busio
19-01-2004 14:29
anonim
Typ: Nie zarejestrowany
CześćFunkcja API (WritePrivateProfileString) dopisuje wpis do pliku (sprawdziłem jak radziłeś) oczywiście treść wpisu narazie nie jest tak ważna.Dodanie wpisu a potem uruchomienie programu powoduje otwarcie pliku i przypisanie do ListBoxa (dotąd działa dobrze)Dim nazwapliku As StringDim zawartosc As StringDim strfiltr As StringDim buf As StringDim uchwyt%nazwapliku = App.path & "\Login32.wdf"uchwyt% = FreeFileList3.ClearOpen nazwapliku For Input As #uchwyt%Do While Not EOF(uchwyt%)Line Input #uchwyt%, zawartosc If Left$(zawartosc, 1) = "[" Then zawartosc = Mid(zawartosc, 2) zawartosc = Left(zawartosc, Len(zawartosc) - 1) List3.AddItem zawartosc End IfLoopClose #uchwyt% Czytam zawartość pliku linia po lini (If.. powodujewyciągnięcie tylko nazwy sekcji bez nawiasów - znalazłem już do tego inną funkcje ale to jest mniej ważne)Problem powstaje w momencie gdy uruchamiam program, wywołuję otwarcie pliku (wszystko OK - przypisanie itd) po czym dodaje wpis Funkcją API i wywołuję ponowne otwarcie pliku (żeby odświeżyć ListBoxa - nie wiem czy to dobry pomysł? ) ale chciałbym zobaczyć rezultat działania Funkcji APICo ciekawe zauważyłem ostatni iż, gdy wżuciłem ten kodzik (otwieranie pliku i przypisanie) do procedury i ją wywołałem (dodając jakiś tam przycisk ) efekt po jednym klnknięciu żaden ale po dwuch kliknięciach zadziałało i odświerzyło ListBoxa a ja zgupiałem. Gdzies robie blad, może jakaś zmienna się nie odświeża po otwarciu pliku a przy następnym już tak - nie wiem.Dzięki.
19-01-2004 19:10
andrey Łódź
Typ: neutral Postów: 295 Zarejestrowany: Mar 2003
Mam podobny problem z plikiem ini Zapisuje do niego wartości, klucze sekcje i chce obejrzeć jego zawartość w textbox ale mimo iz wiem ze sekcje sie zmieniły np dodałem nowa to textbox nie wyświetla zawartości pliku mimo użycia funkcji Open . Takze używam funkcji WritePrivateProfileString Co może być powodem ? _____________________________________________A Methodical Approach to Error Handling: On Error GoTo Hell
26-01-2004 16:22
3078613
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20