Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Problem z czytaniem z pliku
anonim




Typ: Nie zarejestrowany
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

Witam

1. 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łędu

Pozdrawiam busio

18-01-2004 21:02
Pokaż profil busio  Wyślij email do busio   Odwiedź stronę busio  
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 projektu

4 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 idzie

Dzieki czekam na dalszą pomoc

18-01-2004 22:35
  
busio
busio




Typ: neutral
Postów: 98
Zarejestrowany: Sep 2002

Witam

Wykorzystywana 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
Pokaż profil busio  Wyślij email do busio   Odwiedź stronę busio  
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 String
Dim zawartosc As String
Dim strfiltr As String
Dim buf As String
Dim uchwyt%


nazwapliku = App.path & "\Login32.wdf"
uchwyt% = FreeFile
List3.Clear

Open 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 If

Loop
Close #uchwyt%

Czytam zawartość pliku linia po lini (If.. powoduje
wycią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 API

Co 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 ?


_____________________________________________
http://www.carbondesign.pl/ - rowery poziome, trójkołówce, handbike-i, tuning, akcesoria

26-01-2004 16:22
Pokaż profil andrey  Wyślij email do andrey   Odwiedź stronę andrey       3078613
Wszystkich odpowiedzi: 5 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1