Práce se soubory a jejich FileName
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Práce se soubory a jejich FileNamePráce se soubory a jejich FileName

 

Práce se soubory a jejich FileName

Google       Google       1. 3. 2007       15 285×

Dnes to bude o FileNamech souborů, změně pozice kurzoru a zastavení přeblikávání obrázku.

Reklama
Reklama

Dnešní díl bude zaměřen převážně na funkce, jež budou pracovat s cestami k souboru. Ale předtím si ještě řekneme trik na zrušení otravného přeblikávání obrázku, je-li s ním programově zacházeno. Do události OnCreate formuláře napíšeme:

procedure TForm1.FormCreate(Sender: TObject);
begin
   Image1.Parent.DoubleBuffered := True; // tímto jsme zrušili přeblikávání obrázku
end;

S následujícím kouskem kódu zapsaném například do Timeru by už už neměl obrázek blikat:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Image1.Left := Image1.Left + 1;
end;

A teď k slibovaným funkcím pro práci s tzv. Filename. Tyto funkce jsou dobré, znáte-li úplnou cestu k souboru (C:\Program Files\neco\program.exe), ale uživateli chcete pouze zobrazit jméno souboru (program.exe), nebo pouze adresář, v němž je dotyčný soubor uložen (C:\Program Files\neco\), atd. Mohli bychom si to zařídit sami pomocí spousty jiných funkcí, jenže proč to dělat složitě – Delphi již má pro tuto příležitost připraveno plno nijak složitých funkcí. Nejprve uvedu seznam s popisem těchto f-cí, poté si napíšeme i nějaký zdrojový kód na ukázku.

function ExtractFileDrive(const FileName: string): string;
Tato funkce nám ze zadané cesty (C:\Program Files\neco\program.exe) vrátí pouze označení disku (C:).
function ExtractFilePath(const FileName: string): string;
Vrátí nám ze zadané cesty pouze adresáře, přes které se k souboru dostaneme, např. C:\Program Files\neco\.
function ExtractFileDir(const FileName: string): string;
Skoro stejná funkce jako ExtractFilePath až na to, že výstup je bez lomítka na konci (C:\Program Files\neco).
function ExtractFileName(const FileName: string): string;
Vrací nám název souboru ze zadané cesty (program.exe).
function ExtractFileExt(const FileName: string): string;
Vrací příponu souboru (.exe).
function ExtractShortPathName(const FileName: string): string;
Vrací krátký název, jenž je využíván např. v DOSu(C:\Progra~1\Borland\Delphi\Bin\Delphi32.exe).
function FileExists(const FileName: string): Boolean;
Když zadaný filename existuje, vrací True, jinak False.
function GetCurrentDir: string;
Vrací název složky, ve které se zrovna nacházíme.
function DeleteFile(const FileName: string): Boolean;
Vymaže soubor. Pokud soubor nelze vymazat, vrací False.
function FileAge(const FileName: string): Integer;
Vrací stáří souboru. Když soubor neexistuje, pak je návratovou hodnotou číslo −1.
function RenameFile(const OldName, NewName: string): Boolean;
Změní název souboru. Když přejmenování proběhne úspěšně, vrátí False.
function RemoveDir(const Dir: string): Boolean;
Vymaže adresář. Pozor! Tento adresář musí být prázdný před vymazáním, jinak funkce vrátí False a adresář nevymaže.

Teď něco z kódu. Nejprve si na formulář přidáme komponentu OpenDialog z palety Dialogs. Na formuláři klikneme na nově vzniklou ikonku a v okně Properties na vlastnost Filter. Zobrazí se dialogové okno, co chce po nás zadat hodnoty do Filter Name a Filter. Filter Name nám obsluhuje to, co se bude u dialogu dole zobrazovat. Zadáme tam „Všechny soubory“. Položka Filter znamená, jaké typy souborů chceme v našem dialogu vidět. Jelikož ve Filter Name máme „Všechny soubory“, zvolíme i příslušný Filter, a to „*.*“. Pro zobrazení pouze textových souborů bychom do Filter napsali „*.txt“. Dále přidáme ještě jeden Edit, Label a Button. Do události OnClick Button1 napíšeme:

procedure TForm1.Button1Click(Sender: TObject);
var
 s:string; //deklarace proměnné pro uložení cesty k souboru
begin
  If OpenDialog1.execute Then begin
    s := OpenDialog1.FileName; // proměnné přiřadíme filename zvoleného souboru
    If trim(s) <> '' then begin //pokud se 's' nerovná ničemu :)
      Label1.caption := ExtractFileName(s); //z filename si vybereme jen jméno souboru
    end else
      exit; //když jsme nevybrali žádný soubor, tak pryč
  end;
end;

Zdrojový kód je dnes poměrně jednoduchý. Místo funkce ExtractFileName můžeme dosadit kteroukoliv z výše uvedeného výčtu.


Další zajímavou funkcí je GetCursorPos a SetCursorPos.

Funkce GetCursorPos nám najde aktuální souřadnice kurzoru. Její návratová hodnota je typu TPoint, což vypadá takto:

type TPoint = packedrecord
  X: Longint;
  Y: Longint;
end;

Nyní si napíšeme zdrojový kód aplikace, která bude zobrazovat v titulku okna souřadnice myši. Přidáme si na formulář Timer z palety System, dáme mu interval 1 (milisekunda) a do události OnTimer Timer1 napíšeme:

procedure TForm1.Timer1Timer(Sender: TObject);
var
 s:TPoint;
begin
 GetCursorPos(s);
 Form1.Caption := 'X = '+ IntToStr(s.X) + ', Y = '+ IntToStr(s.Y);
end;

Jestliže byste chtěli programově změnit pozici kurzoru, poslouží vám funkce SetCursorPos. Do nového tlačítka na formuláři napište do jeho události OnClick následující:

procedure TForm1.Button2Click(Sender: TObject);
begin
 SetCursorPos(0,0);
end;

Po kliknutí tlačítkem myši se kurzor objeví na souřadnicích 0,0 – levý horní roh.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor programoval v Visual Basicu, Delphi, nyní jen v Jave!

Nové články

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý