Autor |
Beitrag |
spoof
      
Beiträge: 48
|
Verfasst: So 10.11.13 01:08
Ich hab Fragen zu Prozeduren, ich kenne es bisher nur so dass man eine Prozedur so benutzt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.BT_LoginClick(Sender: TObject); var loginuser,loginpw,code,code2:string; loginusercount,loginpwcount,loginuserverschlüsselt,loginpwverschlüsselt,i,j:integer; begin
loginuser:=ED_Loginuser.Text; loginpw:=ED_Loginpw.Text; Ini:=TIniFile.Create('C:\Iniprogramm\login.ini'); loginuserverschlüsselt:=0; loginpwverschlüsselt:=0;
usw... |
Jetzt seh ich aber bei Tutorials immer öfter sowas
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure OpenDrive(AOpen: Boolean); const OpenStr: array[False..True] of string = ('closed', 'open'); begin mciSendString(PChar('Set cdaudio door ' + OpenStr[AOpen] + ' wait'), nil, 0, 0); end; usw... |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure Out32(PortAddress: smallint; Value: smallint); stdcall; export; var ByteValue: Byte; begin ByteValue:=Byte(Value); asm push dx mov dx,PortAddress
usw... |
Was hat es mit den Kommentierten Zeilen aufsich?
Wie man beim ersten der 3 Fälle sehen kann ist das eine normale buttonfunction die beim click ausgeführt wird,die anderen 2 versteh ich nicht das is meine Frage, was haben die Procedur Zeilen zu bedeuten? Wieso wird da in der Klammer deklariert? Wo ist der Sinn dabei und warum macht man das und was bringt das oO ?
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: So 10.11.13 07:46
Die Frage ist etwas unklar. Du hast bei Prozeduren (suche dies mal in der Delphi-Hilfe) die Möglichkeit, entweder gar keine Parameter zu übergeben, oder einen oder mehrere. Dazu noch die verschiedensten Variablentypen als Parameter. Sender ist im ersten Fall das Objekt, welches die Prozedur aufruft (z.B. Dein Button). Im zweiten Fall übergibst Du eine boolsche Variable als Parameter. Das sind zumeist selbst geschriebene Prozeduren. Ein Beispiel für mehrere Parameter sit eine OnKeyDown-Prozedur (z.B. einer TEdit-Komponente):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Deklaration im Formular Form1:
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Aufruf:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin end; |
Hier hast Du sowohl Sender, als auch Key und Shift. Key muss eine Variable sein, die Du übergibst (deswegen Var vorangestellt) , und Shift kann auch ein fester Wert sein.
Der dritte Fall ist zusätzlich mit Direktiven versehen. Diese beschreiben (stdcall z.B., ob die Prozedur die Parameter auf Register des Prozessors ablegt oder nicht, export hat heute keine Bedeutung mehr, galt nur für 16-bit-Systeme (wo die Adressräume unterschiedlich angesprochen wurden)
Rufe mal "Parameter" unter der Delphi-Hilfe auf.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.11.13 09:35
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| uses MMSystem;
procedure OpenDrive(AOpen: Boolean); const OpenStr: array[False..True] of string = ('closed', 'open'); begin mciSendString(PChar('Set cdaudio door ' + OpenStr[AOpen] + ' wait'), nil, 0, 0); end;
procedure TForm1.Button2Click(Sender: TObject); begin OpenDrive(true); end;
procedure TForm1.Button3Click(Sender: TObject); begin OpenDrive(false); end; |
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: So 10.11.13 10:53
Außerdem gibt es einen Unterschied zwischen Methoden und den sog. regulären Prozeduren/Funktionen. Eine Methode gehört immer zu einer Klasse bzw. einer Instanz davon, z.B.:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TDings = class procedure Bums; end;
procedure Wuppdi;
implementation
procedure TDings.Bums; begin ... end;
procedure Wuppdi; begin ... end; |
|
|
Lemmy
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: So 10.11.13 11:15
|
|
spoof 
      
Beiträge: 48
|
Verfasst: So 10.11.13 12:11
Ohje ich verteh iwie kaum was.
Ich such mal nach nem tutorial vllt find ich ja was.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.11.13 12:23
Hier gibt es Grundlagen-Tutorials.
Auch die Uni Leipzig bietet ein Delphi-Tutorial.
Es gibt sogar ein entsprechendes Wikibook.
... und noch viel mehr via Google zu erkunden 
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.11.13 12:26
@spoof
Gewöhne Dir mal an, fehlerfrei zu schreiben, sonst wird das mit dem Programmieren NIE etwas!
www.downloads.delphi...de/DelphiStarter.pdf
Zuletzt bearbeitet von hathor am So 10.11.13 15:05, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.11.13 12:28
Für diesen Beitrag haben gedankt: Mathematiker
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 10.11.13 15:08
|
|
spoof 
      
Beiträge: 48
|
Verfasst: So 10.11.13 15:15
Ok, danke für alle Antworten, ich hab es denk ich jetzt verstanden:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.Button1Click(Sender: TObject); begin messages(5); end;
procedure messages(Anzahl: integer); var i: integer; begin for i := 1 to Anzahl do Showmessage(Inttostr(i)); end;
procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin for i := 1 to messages2(2,5) do Showmessage(Inttostr(i)); end;
function messages2(zahl1,zahl2:integer):integer; var i: integer; begin result:=zahl1+zahl2; end;
end. |
Hab das mal soweit kommentiert wie ich den Code verstehe und geschrieben hab.
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: So 10.11.13 19:57
|
|