/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hvordan udføres følgende søgning i et rich~
Fra : Mortensen


Dato : 28-08-01 15:06

Haves form med buttom (søg), en spinEdit til angivelse af idnr(Numerisk) og
en richedit (Med en indlæst ASCII fil med ca 1000000 linier af 24 krakter
lang) ønsker at kunne finde et bestemt Idnr. ((yyyyy) som er på plads 14 i
linien og fylder 5 karakter).

Formatet af filen som er indlæst i richedit er som følger:

ACB0077xxxxxxyyyyy<CR><LF>

Hvor xxxxxx er tal mellem 0-999999
Hvor yyyyy er tal mellem 0-99999
Hvor er tal mellem 0-999

Hvordan angriber jeg dette ?? er det en string og søgning af idnr jeg skal
bruge??gode råd modtages med glæde




--
Med venlig hilsen

Carsten



 
 
John Larsen (29-08-2001)
Kommentar
Fra : John Larsen


Dato : 29-08-01 21:00


"Mortensen" <CBM@indbakke.dk> skrev i en meddelelse
news:3b8ba551$0$7918$edfadb0f@dspool01.news.tele.dk...
> Haves form med buttom (søg), en spinEdit til angivelse af idnr(Numerisk)
og
> en richedit (Med en indlæst ASCII fil med ca 1000000 linier af 24 krakter
> lang) ønsker at kunne finde et bestemt Idnr. ((yyyyy) som er på plads 14 i
> linien og fylder 5 karakter).
>
> Formatet af filen som er indlæst i richedit er som følger:
>
> ACB0077xxxxxxyyyyy<CR><LF>
>
> Hvor xxxxxx er tal mellem 0-999999
> Hvor yyyyy er tal mellem 0-99999
> Hvor er tal mellem 0-999
>
> Hvordan angriber jeg dette ?? er det en string og søgning af idnr jeg
skal
> bruge??gode råd modtages med glæde

Det her er ikke en hyper optimeret metode (langtfra) men en hurtig off the
top of my head :)

function TForm1.FindIdnrLinieNr(HelStr: String) : Integer; // Hvis du bruger
Delphi 5+ (jeg er ikke sikker på Delphi < 5)
var
I : Integer;
begin
Result := -1 // for det tilfælde at Idnr ikke eksisterer :)
for I := 0 to RichEdit1.Lines.Count - 1 do
if Copy(RichEdit1.Lines[I], 14, 5) = Helstr then // Delstrengen der
indeholder IdNr
begin
Result := I; // Linienr som IdNr optræder 1. gang (dette virker kun
hvis IdNr er unikt)
Break; // For at undgå en søgning på samtlige 1000000 linier
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Linie: Integer;
begin
Linie := FindIdnrLinieNr(SpinEdit1.Text);

// Jeg bruger ikke selv SpinEdit så det kan være den returnerer Value =
Integer
// Hvis det er tilfældet skal deklarationen i Function FindIdnrLinieNr
naturligvis laves om,
// det samme skal Copy linien i funktionen, så resultatet af Copy bliver
konverteret til integer

if Linie <> -1 then
begin
// Her gør du med RichEdit hvad du gør når du har fundet IdNr.
end;
end;

NB !!!!! Dette er ikke afprøvet kode, det er tastet frit i postprogrammet,
så det kan være behæftet med fejl, men jeg håber det giver dig en ide om
hvad jeg mener.

Hilsen

John



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste