29. februar 2000 - 21:42Der er
12 kommentarer og 4 løsninger
Funktion problemer......
Hej !
Jeg har et problem med en funktion jeg har skruet sammen........
Pointen er at den skal fjerne Path'en fra et filnavn ( fra OpenDialog.Filename ), og finde endelsen ( ext ) og "navnet" (name), f.eks. :
c:\programmer\myWebSite\homepage.html
ext : html name : homepage
her er hvad jeg har :
msgbox'ene er til debug.......
procedure TfrmMain.GetFileInfo(filename: string; var name: string; var ext: string); var slashPos: Integer; Len: Integer; rest: Integer; begin while Pos('\',filename) > 0 do begin {+} slashPos := Pos('\', filename); Len := Length(filename); rest := Len - slashpos; filename := Copy(filename,slashpos,rest); end; if Pos('.', filename) > 0 then begin name := Copy(filename,1,Pos('.', filename)); ext := Copy(filename,Length(name),Length(filename)-Length(name)); end else name := filename; ShowMessage(name); ShowMessage(ext); end;
jeg ved godt at ext nok vil have komma med, men problemet ligger i at jeg INTET resultat får, ( måske en masse spaces, men ellers ikke ! )....
Anyhelp anyone ?
Med venlig hilsen Ulrik Jensen ultik@cyberdude.com
procedure TfrmMain.GetFileInfo(filename: string; var name: string; var ext: string); begin ext:=ExtractFileExt(filename); name:=ExtractFileName(filename) end;
procedure TfrmMain.GetFileInfo(filename: string; var name: string; var ext: string); var s : string; e : string; p : Integer; begin name := ''; ext := ''; s := extractfilename(filename); // indbygget delphifunktion: returnerer homepage.htm s := trim(s); // trim sletter alle spaces før og efter tekst. En indbygget delphi funktion if s <> '' then begin e := trim(extractfileext(s)); // indbygget delphi funktion: returnerer .htm if e <> '' then begin p := pos(e,s); // find .htm's pos i homepage.htm if e[1] = '.' then delete(e,1,1); // hvis første tegn i ext er et punktum, så slet det ext := e; if p > 0 then s := copy(s,1,p-1); // fjern .htm fra homepage.htm name := s; end; end; end;
Her har du din egen omskrevet en smugle... Du havde misforstået Copy-funktionen...
procedure GetFileInfo(filename: string; var name: string; var ext: string); var slashPos: Integer; Len: Integer; rest: Integer; begin while Pos('\',filename) > 0 do begin {+} slashPos := Pos('\', filename); Len := Length(filename); rest := Len - slashpos; filename := Copy(filename,slashpos + 1,rest); end; showmessage(filename); if Pos('.', filename) > 0 then begin name := Copy(filename, 1 , Pos('.', filename) - 1); ext := Copy(filename,Pos('.', filename)+1, length(filename)); end else name := filename; ShowMessage(name); ShowMessage(ext); end;
Bemærk lige, at en fil sagtens kan hedde: a.b.c.htm.d.s.a.htm Ja, ok, i princippet ... ;-) Man skal derfor søge efter ekstension- punktummet bagfra. med mindre naturligvis ultik ved, der kun er et punktum i navnet.
Fint nok - vi er alle på vej til at slå Cyberesben af pinden som nummer 1 på eksperten. ;-)
Synes godt om
Ny brugerNybegynder
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.