Einzelnen Beitrag anzeigen

Noobix93

Registriert seit: 28. Mär 2008
Ort: Münster
21 Beiträge
 
#1

Memo Durchsuchen & Fortschritsanzeige

  Alt 18. Jun 2008, 15:17
Mit dieser Procedur möchte ich ich Leuten helfen die eine kleine Suchfunktion in ihr Programm einbauen möchten.

Uses: ...,Math
Delphi-Quellcode:
function RoundToPointPosition(Number : Extended; PointPos : Byte): Extended;
Var
  Multi:Integer;
begin
  Multi:=Trunc(IntPower(2,PointPos));
  Result := Round(Number * Multi)/Multi;
end;
Delphi-Quellcode:
procedure searchfunc(const Anzeige:Tmemo; Ripping:Tmemo; Input:Tedit; Progressbar:Tprogressbar; Percent:Tlabel; Found:Tlabel );
var i,poss:integer;
percents:extended;
searchline,strclear:string;
begin
Anzeige.lines.Clear; // Die Anzeige säubern
for i := 1 to ripping.Lines.count do
 begin
  searchline:=Ripping.lines[i]; // Die Zeilen zuweisen indenen gesucht werden soll
  poss := Pos(''+input.text+'', searchline); // Überprüfen ob richtiger Wer gefunden wurde
  Application.ProcessMessages; // Prozess-Messages damit das Programm reagiert
  percents:=i*100/Ripping.lines.count; // Prozentsatz mit 3-Satz ausrechnen
  percents:=RoundToPointPosition(percents,0); // Runden der % Zahl auf ganze Zahlen
  strclear:=floattostr(percents); // Umwandlung der FLot-Zahl in einen String
  ProgressBar.Position:=strtoint(strclear); // Umwandlung in einen Integer Wert für die Progressbar
  Percent.caption:=''+floattostr(percents)+'%'; // Vortschrits% Label
  Found.caption:=''+inttostr(Anzeige.lines.count)+' results for '+input.text+'';// Anzeige der gefundenen Resultate für "input"
  if Poss <> 0 then
    Anzeige.lines.add(searchline); // Wenn gefunden wird nun die Zeile hinzugefügt wo der Wert gefunden wurde
 end;
 if Anzeige.lines.count=0 then
  Anzeige.lines.add('No results found for '+input.text+'');
end;

Aufruf:
searchfunc(Anzeige,Ripping,edit35,progressbar4,label309,label310);
STRG+ C ist zwar Freund des Programmierers aber am ende versteht man es selber nicht mehr
  Mit Zitat antworten Zitat