Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Odczytywanie z pliku z pomijaniem...
anonim




Typ: Nie zarejestrowany
Odczytywanie z pliku z pomijaniem...

Witam na poczatku Szanowne Grono!!!
Nie jestem wcale programista ani nawet informatykiem a tylko mechanikiem ale czasem sobie cos prostego napisze zeby ulatwic sobie prace (zazwyczaj w CAD) i mam taki problem.. W jaki sposob (jaki znak w linii postawic - tak jak w samym VB znak " ' " ) zrobic aby linijka w pliku, z ktorego odczytuje jakies dane zostala:

1.W pierwszym przypadku pominieta.

-a takze:
2.Skasowana jesli dana zmienna bedzie rowna jakiejs tam wartosci jaka zaloze z gory.

Jesli chodzi o drugie to chyba poradze sobie z przeszukaniem pliku w celu znalezienia tej zmiennej tylko czy moge ja od razu usunac (a musi to byc usuniete w ten sposob ze nie pozostanie tam pusta linijka) czy musze to przechowac gdzies na moment (jesli tak to jak?) a nastepnie zapisac w tym samym pliku z pominieciem tej jednej zmiennej , ktorej nie ma juz byc...

Nie wiem czy wogole ktos mnie zrozumie, bo to pewno wcale nie trudne, i moze mozna jeszcze inaczej i prosciej..

Z gory Dzieki!
Krzychu

02-06-2004 02:49
  
leadass




Typ: neutral
Postów: 13
Zarejestrowany: Apr 2004

Witam

Mam nadzieje ze ktos udzieli jakichs cennych rad lub wskazowek. Ciekawe pytanie, wlasnie ja tez przymierzam sie do napisania "szperacza" dokumentowego, ktory wyszukiwalby zadane ciagi. Office jest wyposazony w taka wyszukiwarke ale u mnie czesto sie ona wiesza i jest strasznie powolna.

Pozdrawiam
leadass

02-06-2004 13:15
Pokaż profil leadass  Wyślij email do leadass   
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

Niezabardzo kumam o co panu anonimowi chodzi - może wyjaśni tu bardziej swój problem/opisze go jakoś inaczej. Bo jeżeli chodzi np o przypadek VB to jet to pewnie tak zrobione ze podczas kompilacji - czyli podczas rozpoznawania posczególnych linii kodu - program sprawdza najpierw czy występuje na początku znak " ' " i jeżeli występuje to nie sprawdza - nie porównuje dalszych stringów w danej lini z bazą poleceń (jakie występują w VB).

Jeżeli chcesz usunąć linię gdy w niej występuje jakiś znak najlepiej zastosować "plik temp" do którego będziesz wrzucał te linie które sa pozbawione "tego znaku" (żeby nie ładować wszystkiego do pamięci!). Identycznie w przypadku jakiejś zmiennej.

Co do pytania leadass'a - nie wiem czy twój problem jest podobny no ale... Moja babka z infy kiedyś mowila że jednym z lepszych sposobów przeszukiwania  plików/stringów jest hashowanie (haszowanie) - najpierw szukanego stringu a potem hashowanie poszczególnych długości danych z pliku - a następnie porównywanie obu hashów. Nie wiem czy dobrze to wyjaśniłem...

...jak szukasz np stringu "aaa" w "abcdefaaabrd" to hashujesz najpierw "aaa" i przechowujesz otrzymaną wartość w pamieci. A następnie hashujesz pierwsze 3 (bo taką długość ma szukany string) znaki drugiego ciągu - czyli "abc" a następnie "bcd" itd.

Na bank jest to bezsensowana metoda gdy szukany string jest krótki ale w przypadku dłuższych może to i jest logiczne. Wogóle nie jestem pewien czy to ma sens - babka (i zresztą nie tylko ona bo i jej koledzy też) z informy (Polibuda Wr.) twierdziła że ma. Chciałem jej udowodnić że wymyśle algorytm przeszukiwania lepszy (szybszy) od tego zaproponowanego przez nią - no ale właśnie mi tych chęci zabrakło i go nie napisałem.

Może się komuś będzie chciało zrobić i potestować jaki algorytm w jakich przypadkach jest lepszy


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

03-06-2004 20:44
Pokaż profil m-a-x  Wyślij email do m-a-x   
anonim




Typ: Nie zarejestrowany

Otoz jesli mnie Pan m-a-x nie zrozumial do konca, to z tym pominieciem linijki chodzi mi o to:
Odczytuje jakies dane za pomoca funkcji EOF. Plik ten tworzy mi sie w ten sposob ze mam wartosc zmiennej a za nia mam umieszczony jakis komentarz, ktorego nie chce czytac, sluzy mi on do czegos innego, np. jak plik ten sobie wydrukuje to wiem co jest co..

Plik taki moze miec np. postac:
12345  #komentarz
12245  $komentarz
65362  %komentarz
98756  &komentarz
.
.
.
itd. itd.
Tylko co ma byc w miejscu tych powyzej postawionych # $ % & o ile takie cos istnieje, bo inaczej to trzeba napisac samemu jakas funkcje zeby czytala tylko to co jest do pewnego znaku...
Czy dobrze chociaz mysle..??

POZDRAWIAM
Krzychu

04-06-2004 01:24
  
Knight Lore''FC




Typ: neutral
Postów: 240
Zarejestrowany: Jan 2003

Witam
W vb nie ma takiej funkcji, ktora odczytywala by tylko do okreslonego znaku (kodu)
Mozna to rozwiazac na kilka sposobow.

Jezeli po wartosci zawsze wystepuje komentarz to tym znakiem rozdzielajacym je powinien byc przecinek (Uwaga - w komentarzu nie wolno uzywac przecinka!)
I odczytujemy co 2 wartosc (dane, komentarz, dane, komentarz)
poleceniem INPUT (nie LINE INPUT bo to odczyta cala linie)

Mozna zrobic tez inaczej.
Do rozdzielenia musimy wybrac unikatowy znak (kod) - taki ktory nie wystepuje ani w danych ani w komentarzu np |

Dim Razem as String
Dim Dane as String

Line Input #1, Razem  'Teraz odczytujemy cala linie
Dane=Left(Razem,Instr(1,Razem,"|" )-1)  'rozdzielamy


problem bedzie jesli nie ma tego znaku (komentarza), dla tego trzeba troszke to zmodyfikowac


Dim Razem as String
Dim Dane as String
Dim DaneDo as Integer

Line Input #1, Razem
DaneDo=Instr(1,Razem,"|" )-1

if DaneDo>0 then
  Dane=Left(Razem,DaneDo)
else
  Dane=Razem
end if

'jesli to nie mial byc tekst tylko liczby to zamieniamy je VAL (uwaga na kropki i przecinki)

Co do wyszukiwania ciagu znakow w tekscie to jest przeciez funkcja w VB (ktora uzylem powyzej) Instr - znajdzie wszystko

Pozdrawiam

04-06-2004 10:50
Pokaż profil Knight Lore  Wyślij email do Knight Lore        1065423
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1