Lucrul cu fișiere în Delphi

Lucrul cu fișiere este un lucru important în orice limbaj de programare. Lucrul cu fișierele din Delphi vă permite să citiți, să salvați informații și să efectuați alte acțiuni cu fișiere. În Delphi, toate operațiile cu fișiere sunt suportate - crearea, căutarea, citirea și scrierea, redenumirea fișierelor, precum și a directoarelor. În Delphi, există mai multe moduri de a lucra cu fișiere.







Pentru intrarea "lirică", trebuie să menționați componentele Delphi care pot lucra cu fișiere. Ei citesc și stochează conținutul lor, șiruri de tip String. într-un format de fișier text. Acestea sunt componentele din lista. ComboBox și Memo. situat pe prima filă a paletei componente.

Fiecare linie a componentelor ListBox și ComboBox este un obiect Items [i]. și memo - linii [i]. unde i este numărul liniei care este calculat de la zero. Adăugarea rândurilor către componente se face utilizând metodele Adăugare și inserare:

Lucrul cu fișiere în Delphi

începe
Memo1.Lines.Add ("Prima linie");
ComboBox1.Items.Add ("Prima linie");
ComboBox1.Items.Add ("A doua linie");
ListBox1.Items.Add ("Prima linie");
ListBox1.Items.Add ("Al doilea rând");
se încheie;

Metoda Add adaugă o nouă linie la sfârșit. Metoda de inserare are un parametru suplimentar, indicând ce linie să plaseze noua linie după. Accesul la rânduri este după cum urmează:

ComboBox1.Items [0]: = 'Prima linie sa schimbat';
ListBox1.Items [1]: = 'A doua linie a fost modificată';

Componenta ComboBox are în plus o proprietate Text. unde (ca și componenta Editare) există un text de intrare:

ComboBox1.Text: = 'Text de intrare';

Linia ComboBox a componentei selectate specifică o proprietate ItemIndex de tip Integer. adică numărul rândului selectat. Prin urmare, puteți obține rândul foarte selectat al componentei ComboBox în modul următor:

sau, folosind operatorul adjunct

Cu ComboBox1 face
S: = Elemente [ItemIndex];

Iată cum puteți introduce informațiile introduse în component prin apăsarea tastei Enter și ștergerea acesteia apăsând Escape:
Selectați pe formularul ComboBox și mergeți la Inspectorul de obiecte, în fila Evenimente. Faceți dublu clic pe butonul OnKeyPress. Sistemul Delphi va crea un proces preprocesor de manipulare. scrie:

începe
dacă Key = # 13 atunci
ComboBox1.Items.Add (ComboBox1.Text);
dacă Key = # 27 atunci
ComboBox1.Items.Delete (ComboBox1.Items.Count-1);
se încheie;

Cheie - definit în această variabilă de ieșire care conține codul tastei apăsate, # 13 și # 27 - codurile cheie Introduceți și de evacuare, respectiv. Items.Count - numărul de linii din component. Deoarece numărarea liniilor merge de la zero, luăm unitatea. După următoarea ștergere, numărul de rânduri se modifică, astfel încât Items.Count-1 întotdeauna indică ultima linie. Apăsând consecutiv Escape. putem șterge toate rândurile. echipă
ComboBox1.Items.Delete (0);
puteți obține același efect, numai primele linii vor fi șterse. Cu toate acestea, pentru a șterge totul dintr-o dată, există o metodă de Clear!

Ei bine, acum, de fapt, despre salvarea conținutului într-un fișier. Pentru a face acest lucru, executați comanda

Cu toate acestea, extensia poate fi pusă oricând, nu neapărat. txt, precum și în general fără ea. Dar prelungirea. txt va facilita deschiderea fișierului cu un Notepad standard Windows, care este foarte convenabil la etapa de scriere a programului!
Metoda LoadFromFile se utilizează pentru a încărca:

Ce să facem dacă în programul nostru nu lucrăm cu componentele Combobox. ListBox sau Memo. Trebuie să stocați informații? Luăm una din componente și facem-o invizibilă, pentru aceasta setăm proprietatea Visible la False în Inspectorul de obiecte. Funcționalitatea sa de la acest lucru nu se va schimba!







Atingerea finală este de a crea un program care își păstrează poziția pe ecran în momentul închiderii și se deschide și acolo. Trebuie să salvăm doi parametri - valorile proprietăților Stânga și Top Forma, aceasta este distanța de la marginea stângă și, respectiv, de sus a ecranului. Aceste valori sunt exprimate în pixeli și au tipul Integer. Este necesar să traduceți aceste numere într-un șir (tip String) folosind instrucțiunea IntToStr. Așadar, plasați lista nevăzută pe formular. faceți clic pe locul gol al Formularului. astfel încât proprietățile sale să apară în Inspectorul de obiecte și să accesați fila Evenimente. Faceți clic pe manipulatorul OnClose și în piesa de lucru creată scrie:

începe
ListBox1.Items.Clear;
ListBox1.Items.Add (IntToStr (Form1.Left));
ListBox1.Items.Add (IntToStr (Form1.Top));
ListBox1.Items.SaveToFile ("MyFormPos.txt");
se încheie;

Acest handler salvează poziția Formularului pe ecran. Acum, scrieți manualul care plasează Formularul în locul inițial când începe programul. Creați un handler de evenimente OnCreate. Acest eveniment apare atunci când Formularul este creat de sistemul de operare. În acest moment, trebuie să alocați proprietățile necesare. E-mail:

începe
dacă FileExists ("MyFormPos.txt") atunci
începe
ListBox1.Items.LoadFromFile ("MyFormPos.txt");
Form1.Left: = StrToInt (ListaBox1.Items [0]);
Form1.Top:=StrToInt(ListBox1.Items[1]);
se încheie;
se încheie;

Prima linie verifică existența fișierului, deoarece dacă nu, se va produce o eroare. Cu toate acestea, programul după emiterea avertismentului se va deschide în locul în care se afla la etapa de proiectare, iar atunci când închideți fișierul dorit va fi recreat!
Apoi, logice încep între paranteze / închidere conține codul în sine, care va fi executat numai fișierul MyFormPos.txt prinalichii în folderul cu programul, deoarece folosește o cale relativă. Puteți specifica o locație specifică, de exemplu, C: \ Program Files \ MyProg \ MyFormPos.txt.

De asemenea, puteți verifica existența unui fișier utilizând controlul excepțiilor. Dacă fișierul nu există, atunci va apărea o excepție. Interceptarea acestuia cu ajutorul unui operator special, putem evita erorile din program.

Desigur, programele profesionale își păstrează poziția în Registrul Windows. Dar totul are timpul.

Memo1.Lines.Add ("Prima linie");
ComboBox1.Items.Add ("Prima linie");
ComboBox1.Items.Add ("A doua linie");
ListBox1.Items.Add ("Prima linie");
ListBox1.Items.Add ("Al doilea rând");

procedura TForm1.Button1Click (expeditor: TObject);
începe
MP1.DeviceType: = dtAutoSelect;
MP1.FileName: = 'nume fișier';
dacă nu MP1.AutoOpen apoi MP1.Open;
MP1.Play;
se încheie;

procedura TForm1.Button2Click (expeditor: TObject);
începe
MP1.Display: = Panel1;
cu OpenDialog1 face
dacă Execute atunci
începe
MP1.FileName: = Numele fișierului;
MP1.Open;
MP1.Play;
se încheie;
se încheie;

Aici trebuie să adăugați OpenDialog, îl puteți introduce în exemplul anterior. Și mai mult. Dimensiunea zonei de redare, adică panoul, trebuie să priviți în avans proprietățile fișierului, în fila "Detalii". Dar este mai bine pentru a face panoul mai mult, și setați proprietatea sa și BevelInner BevelOuter în bvNone, așa că nu a fost vizibil. Și că dimensiunile la fișiere diferite.

Mai mult, traducem în ore, minute și secunde prin intermediul funcției

funcția taim (Lungime: Integer): String;
var chas, min, sec: Integer;
modul funcțional (Lungime: Integer): String;
începe
Rezultat: = IntToStr (Lungime);
dacă Lungimea
E vorba de lungime. Și poziția curentă returnează o proprietate. - Corect, poziție! Măsurăm declanșarea timerului și ieșirea la ProgressBar (să luăm mai bine TrackBar). Din nou, setați proprietatea TrackBar.Max la Mediaplayer.Length.

Există o problemă cu derularea. Pentru a defila, trebuie mai întâi să opriți playerul și cronometrul. Și apoi rulați cu o valoare diferită:

Am fost surprins, dar TrackBar nu are evenimente de mouse. Și că ar fi posibil să se oprească la evenimentul OnMouseDown. Cu toate acestea, puteți utiliza evenimentul OnEnter! Dar tot trebuie să o conduci oricum.

Și pentru a schimba cadrele când reîncărcați, trebuie să introduceți un al doilea cronometru pentru a funcționa atunci când redarea se oprește și setați

dar din anumite motive nu funcționează, dă o eroare la pornire, adăugat 1.05.12, 15:31:21
aaaaaaaa, este necesar să faceți clic pe formular de două ori și să scrieți, să înțelegeți. Alexander, adaugat la data de 1/05/12, 17:11:13
ajutați-vă.

Am scris totul perfect prin adăugare, apoi am folosit comanda Insert.

eroare ia „Depanator excepție notificare de proiect Project1.exe a ridicat clasa excepție EAccessViolation cu«violare de acces la adresa 0056D0FD în Modul»mesaj Project1.exe'.Read adresei 0000030C.Process oprit. pas cu pas sau a alerga pentru a continua.“

Anonim, adăugat la 1.05.12, 17:36:26
În greșelile de a înțelege lipsa de timp. Iată cum:

Memo1.Lines.Insert (0, 'Prima linie');
Alexander, adăugat la 1.05.12, 17:44:33
tu la începutul lecției spunem că așa:

ComboBox1.Items [0]: = 'Prima linie sa schimbat';
ListBox1.Items [1]: = 'A doua linie a fost modificată';

Am inserat această copie în program și am primit eroarea Alexander, adăugată la 1.05.12, 17:54:49
și nu este clar de ce

când scriu Memo1.Lines.Insert (0, 'Prima linie'); sau există un comboBox1.Items.Insert (0, 'boolean')

totul este bine, dar puteți scrie "Memo2.Lines.Insert (1," a doua piesă ");" fără "Memo1.Lines.Insert (0," Prima linie ");" apoi vylazit fals aceeași greșeală.







Articole similare

Trimiteți-le prietenilor: