Lazarus - FAQ

Antworten
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Lazarus - FAQ

Beitrag von pluto »

Hallo,
da immer wieder Leute zu Lazarus stoßen die noch wenig Programmier Erfahrung haben oder evlt. umgestiegen sind von Delphi zu Lazarus habe ich heute mal ein kleines FAQ angefangen...

ich hoffe da rauß wird ein schönes Projekt....
01 - Die Zeilen eines Memo Feldes Rauß Bekommen ?
Memo1.Lines.Count
wobei Count bei 0 anfängt

02 - Die Zeile Y einer Memo Komponenten Rauß bekommen ?
Memo1.Lines[index] oder Memo1.Lines.Strings[index]

03 - Den gesammten Text einer TMemo Komponente rauß bekommen ?
Memo1.Lines.Text

04 - Ein Nachrichten Dialog anzeigen ?
ShowMessage('Dies ist eine Nachricht');

05 - Ein Input Dialog anzeigen
if InputQuery('Der Titel','Der Prompt',stringVar) then
Showmessage('USer hat' + Stringvar eingeben);

06 - Schauen ob es eine Datei Bereits gibt
if FileExists(Dateinamen) then
ShowMessage('Datei gibt es schon');

07 - Ein Text auf den Canvas ausgeben ?
Canvas.Textout(10,10,'Dies ist ein einfacher Text');

08 - Roten Text auf den Canvas ausgeben
Canvas.Font.Color:=clRed
Canvas.Textout(10,10,'Dies ist ein einfacher Text');

09 - In einer Memo Komponenten einen Eintrag hinzufügen ?
Memo1.Lines.Add('Dieser Eintrag wurde hinzugefügt');

10 - Einen eintrag löschen in einer Memo Komponte ?
Memoe1.Lines.Delete(index);

11 - Einen Text mit einem Hintergrund ausgeben ?
canvas.brush.color:=clBlack;
canvas.font.color:=clYellow;
Canvas.fillrect(10,10,10+Canvas.TextWidth('Dies ist ein Text'),10+Canvas.TextHeight('Dies ist ein Text'));
canvas.textout(10,10,'Dies ist ein Text');

12 - Eine Datei Löschen ?
DeleteFile(Datei);

13 - Mehrer Verzeichnisse auf einmal anlegen ?
ForceDirectory('/test/hallo/wie');

14 - Mehrer Grafiken an unterschiedlichen Stellen auf den Canvas Anzeigen

Code: Alles auswählen

// Sollte Gobale Defniert werden
var
  bmp1, bmp2, bmp3:TBitMap;
 
begin
// im OnCreate ereigniss
  bmp1:=TBitMap.Create;
  bmp2:=TBitMap.Create;
  bmp3:=TBitMap.Create;
 
  // Die Grafik sollte im BMP Format vorliegen
  bmp1.LoadFromFile(Dateinamen);
  bmp2.LoadFromFile(Dateinamen);
  bmp3.LoadFromFile(Dateinamen)
 
  // Bei Onpaint der Paintbox
  Paintbox1.Canvas.Draw(10,10,bmp1);
  Paintbox1.Canvas.Draw(10,100,bmp2);
  Paintbox1.Canvas.Draw(10,13,bmp3);
 
  // Bei Destroy des Froms
  bmp1.free; bmp2.Free; bmp3.free
end;



15 - Einen Dynamischen Array anlegen/Definieren ?
TestArray:array of String;

16 - Einen Dynamischen Array eine Größe geben ?
SetLength(arr,high(arr)+2);
Ein Array muss immer größer Installisiert werden als benötig wird.
Grund: Die Länge des Array wird am anfang ende gepseichert.
(Hier bin ich mir aber nicht sicher)

17 - Einen Array ein Wert geben ?
testarray[0]:='Test';

18 - Die Anzahl aller Elemente von einem Array bekommen ?
for i:=0 to High(TestArray) do begin
ShowMessage(TestArray[i]);
end;

19 - Was ist ein Record und wie Defniere ich ihn ?
Ein Record kann mehrer Variablen von unterschiedlichen Datentypen
speichern.

Z.B. so:

Code: Alles auswählen

type
  TTest = record
    Name:String;
    Vorname:String;
    Hausnummer:Integer;
    PLZ:Integer
  end;


20 - Was für Kontroll Möglichkeit habe ich auf eine Variable ?

Code: Alles auswählen

if, case
 
  if test then
    ShowMessage('Variable Test ist True')
  else
    ShowMessage('Variable Test ist False')

test ist jetzt vom Typ Boolean.

Bei Strings geht das z.b. so:

Code: Alles auswählen

if test = 'Hallo' then
    ShowMessage('Test enhält den Wert Hallo')
  else
    ShowMessage(test);


Bei Integer geht das so:

Code: Alles auswählen

if test = 0 then 
    ShowMessage('Test ist = 0')
  else
    ShowMessage(IntTostr(test));


if ausdrücke können auch in gruppen zusammen gefasst werden:
if (test1) and (test2) then ...

oder
if ((test1) and (test2)) or ((test1 and (test3 = 0)) then
...

Ein Case Beispiel könnte so aussehen:

Code: Alles auswählen

case IntVar of
    0: ShowMessage('0)';
 
    1: begin
      ShowMessage('1');
    end
    else
      ShowMessage(IntTostr(IntVar));   
  end;

Es gehen bei einem Case nur Integer Variablen also keine Strings oder sonst was.

21 - Schleifen ?
For, While, Repeat

Code: Alles auswählen

for i:=0 to 10 do 
    ShowMessage('For Schleife ist bei:'+IntTostr(i));

Bei der Forschleife gibt es eine Besonderheit: Die Variable I muss local defniert werden.
und Darf auch nur für Forschleifen verwendet werden sonst nirgends, weil sonst eine Komplier Fehler Meldung
kommt.

Die Vorherige For Schleife zählt Vorwärzt, für rückwährt muss das to druch downto ersetzt werden:

Code: Alles auswählen

for i:=10 DownTo 0 do
    ShowMessage('For Schleife ist bei:'+IntTostr(i));

Die While schleife wird so lange ausgeführt bis die Bedinung eintrift:

Code: Alles auswählen

while test do begin
    ...
  end;

Sobald Test auf False gesetzt wird, wird die While schleife verlassen.
ist test schon auf False wird die While-Schleife gar nicht erst ausgefürht.

Bei der repeat schleife ist es genau anders herrum, die schleife wird immer einmal ausgefürht:

Code: Alles auswählen

repeat
    ...
  until Test;
Zuletzt geändert von pluto am So 16. Dez 2007, 18:08, insgesamt 1-mal geändert.
MFG
Michael Springwald

Antworten