Søge Funktion

Tags:    visual-basic

Hvordan kan jeg lave en søge funktion der kan søge på dele af et ord i en tekst fil???



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hvordan kan jeg lave en søge funktion der kan søge på dele af et ord i en tekst fil???


Helt ærligt, for at vende tilbage til det oprindelige spørgsmål. Dét, du skal gøre, er at hente tekstfilen ind i memory (i en variabel), siden kan du simpelthen bruge Instr-funktionen i VB.

Således hentes en fil ind i mem:

<pre>Public Function ReadEntireFile(ByVal argFileName As String) As String

Dim strBuffer As String
Dim FNum As Integer
Let FNum = FreeFile ' get a file handle

Open argFileName For Binary As #FNum
Let FLen = LOF(FNum) ' get file length
Let strBuffer = Space$(FLen) ' set buffer length
Get #FNum, , strBuffer ' read entire file
Close #FNum

Let ReadEntireFile = strBuffer

End Function</pre>

Du ka' bruge ovenstående funktion således:

<pre>Dim strTextFile As String
Let ReadEntireFile("C:\\AutoExec.Bat") ' << change filename</pre>

Efter, at du har fået filen ind i en variabel, bruger du simpelthen Instr. Jeg går ud fra, at du kender Instr-funktionen i VB. Hvis ikke, så sig til.

Herluf

Software is here and now but rock and roll is forever.[Redigeret d. 06/07-02 18:44:47 af Herluf Hermansen][Redigeret d. 06/07-02 18:46:52 af Herluf Hermansen][Redigeret d. 06/07-02 18:49:06 af Herluf Hermansen]



Hvordan kan jeg lave en søge funktion der kan søge på dele af et ord i en tekst fil???


Hej.. Indsæt FindDialog1 på din form.. og en knap...

<pre>
procedure TForm1.button1Click(Sender: TObject);
begin
FindDialog1.FindText := RichEdit1.SelText;
FindDialog1.Execute;
end;
</pre>

<pre>

procedure TForm1.Finddialog1find(Sender: TObject);
var
st: TSearchTypes;
newpos: integer;
cd: TFindDialog;
begin

cd := (Sender as TFindDialog);

if frMatchCase in cd.Options then
st := st+[stMatchCase];

if frWholeWord in cd.Options then
st := st+[stWholeWord];

if RichEdit1.SelLength > 0 then
RichEdit1.SelStart := RichEdit1.SelStart + 1;

newpos := RichEdit1.FindText(cd.FindText,
RichEdit1.SelStart,
Length(RichEdit1.Text),
st);

if newpos <> -1 then
begin
RichEdit1.SelStart := newpos;
RichEdit1.SelLength := Length(cd.FindText);
end
else
begin
MessageDlg('Blev ikke fundet',mtInformation,[mbOK],0);
RichEdit1.SelStart := 0;
end;

</pre>
[Redigeret d. 27/06-02 22:18:46 af Armen (Cik)]



Det ville være lækkert hvis du gad give mig en forklaring på det du skriver... :-)



Det ville være lækkert hvis du gad give mig en forklaring på det du skriver... :-)

Den kode der er skrevet er til Delphi!

mvh.
Thomas Christensen




Det ville være lækkert hvis du gad give mig en forklaring på det du skriver... :-)
Den kode der er skrevet er til Delphi!

mvh.
Thomas Christensen


Jeg tror, den kan oversættes rimeligt let, MEN (det er derfor jeg ikke gør det) der er nogle ting, jeg ikke rigtigt forstår. Sådan noget som f.eks. TDialog <<< hvad er det?


Software is here and now but rock and roll is forever.



Hvordan kan jeg lave en søge funktion der kan søge på dele af et ord i en tekst fil???

JT

Fornylig lave jeg et program til en verørende postnumre vis du kigger under besvarede spørgsmål kan du finde dit svar der.



Hvordan kan jeg lave en søge funktion der kan søge på dele af et ord i en tekst fil???

Helt ærligt, for at vende tilbage til det oprindelige spørgsmål. Dét, du skal gøre, er at hente tekstfilen ind i memory (i en variabel), siden kan du simpelthen bruge Instr-funktionen i VB.

Således hentes en fil ind i mem:

<pre>Public Function ReadEntireFile(ByVal argFileName As String) As String

Dim strBuffer As String
Dim FNum As Integer
Let FNum = FreeFile ' get a file handle

Open argFileName For Binary As #FNum
Let FLen = LOF(FNum) ' get file length
Let strBuffer = Space$(FLen) ' set buffer length
Get #FNum, , strBuffer ' read entire file
Close #FNum

Let ReadEntireFile = strBuffer

End Function</pre>

Du ka' bruge ovenstående funktion således:

<pre>Dim strTextFile As String
Let ReadEntireFile("C:\\AutoExec.Bat") ' << change filename</pre>

Efter, at du har fået filen ind i en variabel, bruger du simpelthen Instr. Jeg går ud fra, at du kender Instr-funktionen i VB. Hvis ikke, så sig til.

Herluf

Software is here and now but rock and roll is forever.[Redigeret d. 06/07-02 18:44:47 af Herluf Hermansen][Redigeret d. 06/07-02 18:46:52 af Herluf Hermansen][Redigeret d. 06/07-02 18:49:06 af Herluf Hermansen]



Jeg er desværre ikke bekendt me Instr funktionen.. du må gerne forklare mere.



...Jeg er desværre ikke bekendt me Instr funktionen.. du må gerne forklare mere.


OK, no problemas.

InStr går ud på at søge efter en streng i en anden streng.

EKSEMPEL: Du har en streng, f.eks. "Jeg elsker Visual Basic". Du vil gerne vide, hvor i strengen ordet "Basic" starter.

<pre>Dim strText As String
Let strText = "Jeg elsker Visual Basic"

Debug.Print InStr(1, strText, "Basic")</pre>

InStr returnerer 19 i dette tilfælde, fordi order "Basic" begynder på position 19 i strengen. Hvis ordet "Basic" ikke optræder, returnerer InStr-funktionen 0 (nul).

Det første argument er som oftest 1, hvilket fortæller Instr, at den skal søge fra position et (første tegn) og udefter. Hvis første argument er 17, ignorerer InStr alle tegn før 17, dvs. den begynder at sammenligne fra tegn nr. 17 og derudad.

Argument nr. to er den streng, der skal søges i. Argument nr. 3 er strengen, der skal søges efter.

Det er såmænd det.

Software is here and now but rock and roll is forever.



t