Avatar billede dakine Nybegynder
07. marts 2002 - 11:56 Der er 24 kommentarer og
2 løsninger

Søge efter SubString i en text fil. - HowTo ?

Hej med jer.

Jeg har brug for at gennemløbe en komma-separeret tekstfil og lede efter et bestemt tal.

Altså jeg ønsker at lede i txt filen nærmest som var det et SQL kald til en database. Kan det lade sig gøre?
Avatar billede noon Nybegynder
07. marts 2002 - 11:58 #1
ja det kan det!!!
Avatar billede ziron Nybegynder
07. marts 2002 - 11:58 #2
kig på funktionen Pos.

/ZIRON
Avatar billede martinlind Nybegynder
07. marts 2002 - 11:58 #3
Pos();

/Martin
Avatar billede noon Nybegynder
07. marts 2002 - 11:58 #4
men det er meget svært, jeg råder dig til at få en ekspert til at gQre det
Avatar billede martinlind Nybegynder
07. marts 2002 - 11:58 #5
Du kan evt. bruge en TStringStream til at læse din fil ind og så bruge Pos() til at finde dit tal
Avatar billede ziron Nybegynder
07. marts 2002 - 11:59 #6
hmm 1 sek :)

/ZIRON
Avatar billede borrisholt Novice
07. marts 2002 - 12:16 #7
Jeg har skrevet noget kode til hurtig søgning i tekstfiler det kan du hente her :
http://borrisholt.com/eksperten/inst.zip

Jens B
Avatar billede borrisholt Novice
07. marts 2002 - 12:16 #8
ziron er en hest :-)

Jens B
Avatar billede borrisholt Novice
07. marts 2002 - 12:18 #9
"Turbo Search" er den hurtigste ...

Jens B
Avatar billede ziron Nybegynder
07. marts 2002 - 12:20 #10
hvad sker der hvor har du dog været henne i så lang tid?

og du er selv en hest...

/ZIRON
Avatar billede borrisholt Novice
07. marts 2002 - 12:33 #11
Jeg har haft travlt ... Og slet ikke haft tid til at skive her inde ....

SÅ villle jeg lige sige hej :-) Eller måske nærmer hest !

Jens B
Avatar billede dakine Nybegynder
07. marts 2002 - 12:36 #12
Tusinde tak for hjælpen borrisholt og martinlind.
Jeg er ret sikker på, at jeg kan komme videre med jeres svar.
Avatar billede ziron Nybegynder
07. marts 2002 - 12:40 #13
det var da så lidt. det var sku et godt svar jeg gav :)

borrisholt >> det er da ikke så godt, men hej igen og hest kunne man jo også sige...

/ZIRON
Avatar billede dakine Nybegynder
07. marts 2002 - 14:39 #14
Hmmn. Jeg har kigget lidt på eksemplet fra borrisholt. Et fint program må jeg sige, men det et lidt langhåret til mig!
Jeg skal heller ikke have filen i en MemoBox og bruge en FindDialogBox
Jeg skal have min txt file direkte ind i ind i den der TStringStream tror jeg. Den lyder smart men hvordan gør man i øvrigt det? Læser en txt file derind?
Derefter skal jeg rende en database-kolonne igennem og leder efter de samme værdier.

Mit problem er nok i første omgang at få filen ind som en string og dernæst kunne søge i den.
Avatar billede borrisholt Novice
07. marts 2002 - 15:11 #15
hvad så med der her :

kan det ikke hjælpe :

procedure TForm1.Button4Click(Sender: TObject);
var
  FileSearch : TFileSearch;
  cnt, pos: integer;
  FastTime :  TFastTime;
begin
  FileSearch := TFileSearch.create;
  FileSearch.Filename := 'unit1.pas';
  FileSearch.Pattern := 'a';


  FastTime := TFastTime.Create;

  FastTime.Start;
  cnt := 0;

  pos := FileSearch.Findfirst;
  while pos <> POSITION_EOF do
  begin
    inc(cnt);
    pos := FileSearch.FindNext;
  end;

  FastTime.Stop;

  Memo2.Lines.Add('==============================');
  Memo2.Lines.Add('Boyer-Moore-Horspool search algorithm: ');
  Memo2.Lines.Add('==============================');

  Memo2.Lines.Add('String Size: ' + IntToStr(Length(FileSearch.data)));
  Memo2.Lines.Add('Found: ' + IntToStr(Cnt));
  Memo2.Lines.Add('ElapsedTime: ' + FastTime.ElapsedTime);
  FastTime.Free;
end;


Jens B
Avatar billede dakine Nybegynder
07. marts 2002 - 16:13 #16
Hej igen.


Mangler jeg så ikke klasserne TFileSearch og TFastTime for at kunne afvikle programmet? Er det ikke nogle klasse som du selv har oprettet?

Håber du er lidt tålmodig :o)
Avatar billede borrisholt Novice
07. marts 2002 - 16:15 #17
Jeg er MEGET tålmodig .. Desvære kan du ikke læse tanker ....

De to klasser du efterlyser er i det kode jeg først sendte dig :-)

Jens B
Avatar billede dakine Nybegynder
08. marts 2002 - 07:24 #18
Dem prøvede jeg også at tilføje som det første, men jeg har nok bare ikke set den røde tråd i hvordan man sætter og erklærer sådanne klasser. Jeg ender altid med fejl.- men okay. Tak for din tålmodighed. Du har vist gjort dit. :o)
Avatar billede borrisholt Novice
08. marts 2002 - 08:39 #19
nej ikke helt fordi jeg fandt aldrig ud af om DU har forsåter det hele ?

Jens B
Avatar billede borrisholt Novice
08. marts 2002 - 08:41 #20
HVIS du tager mit oprindelige projekt og fjerner koden på Button4Click og erstatter med det ovenstående så virker det ! Er du stadig i tvivl laver jeg gerne et eksempel til dig :-)

Jens B
Avatar billede borrisholt Novice
08. marts 2002 - 09:04 #21
jeg har lagt en ny version ud :
http://borrisholt.com/eksperten/inst.zip

Jens B
Avatar billede dakine Nybegynder
08. marts 2002 - 10:08 #22
Okay. Du ER virkelig tålmodig. Dit sidste eksempel er godt! Det ender jo med, at jeg lære noget af det her :o) jeg forsker videre i sagen. Mange tak (igen). Måske finder jeg på flere spørgsmål. *S*

mvh.
Henrik
Avatar billede borrisholt Novice
08. marts 2002 - 12:50 #23
Lad være med at kigge på hvordan de enkelte klasser er lavet .. Det vigtigste er at du kan bruge dem :-)

Jens B
Avatar billede dakine Nybegynder
08. marts 2002 - 12:56 #24
Jo tak. Jeg kunne selvfølgelig ikke lade være med at lure på det.- men det droppede jeg nu også hurtigt igen. *S*

Men måske du kan give et hint om en anden ting så. Helt valgfrit altså. Jeg burde måske oprette det som et nyt spørgsmål men det relaterer alligevel hertil.
Jeg skal foretage en søgnning i en tekststring på kommasepareret form:

LevNr;LeverandørNavn        ; Adresse; osv ;osv.
1234 ;Hansen & Olsen A/S    ;gade 50 ; osv ;osv.

Jeg har ved søgning ledt efter substrengen 'Olsen' med POS() og den returnerer karakterpladsen for O'et i Olsen. Fint nok.
Nu vil jeg finde ud af hvad hans fulde navn er. Dvs jeg skal blade baglæns til jeg har hele stringen 'Hansen & Olsen A/S'.

Jeg skal altså blive ved at bladre tilbage og samle tekststrengen op til jeg møder tegnet ';' char for char. Ligeledes den anden vej til jeg har A/S med.

Hvordan kan jeg nemmest  gøre det med en streng?

NB: Bare sig til hvis jeg skal oprette det som et nyt spørgsmål.
Avatar billede borrisholt Novice
08. marts 2002 - 13:01 #25
Jeg vil anbefale du bruger min FileSerach dims til at søge med ....

Prøv som step 1 at få den til at lede din fil i gennem efter Olsen fx. Og hvergang den har fundet en olsen skriver den Positionen ud på skærmen ....

Så når vi rundt til resten bagefter ...

Jens B
Avatar billede borrisholt Novice
08. marts 2002 - 13:02 #26
Send mig lige din fil så jeg har noget at søge i Jens@borrisholt.com
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester