AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Deklaration

Ein Thema von johannes-h · begonnen am 19. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
johannes-h

Registriert seit: 19. Mai 2009
29 Beiträge
 
Delphi 2009 Professional
 
#1

Eigene Deklaration

  Alt 19. Mai 2009, 13:57
Hallo,

ich habe erst kürzlich mit Delphi angefangen.

Jetzt wollte ich mir ein Programm schreiben, das Text aus einer Memo-Komponente ausliest und in eine ini-Satei schreibt. Diese Funktion möchte ich aber 2mal aufrufen:
1. Beim KLicken auf einen Button
2. Beim Beenden des Programmes
Es war auch kein Problem, die entsprechenden Zeilen Quelltext zu schreiben



Delphi-Quellcode:
procedure TFmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var I: integer;
var ini: Tinifile;
begin
  while Metext.Lines.Count < 46 do begin
    metext.Lines.Add(''); end;
  ini := tinifile.Create('C:\ToDoJH.ini');
  try
    for I := 0 to 46 do
      ini.WriteString('ToDoMemo',IntToStr(i),metext.Lines[i]);
  finally
    ini.Free;
  end;
end;
Genau die selbe Methode rufe ich auch über einen Button auf:
Delphi-Quellcode:
procedure TFmMain.Load1Click(Sender: TObject);
var i: integer;
var ini: Tinifile;
begin
  while MeText.Lines.Count < 46 do begin
         MeText.Lines.Add(''); end;
  ini:=tinifile.Create('c:\ToDojH.ini');
  try
     for i := 0 to 46 do begin
        Metext.Lines[i] := ini.ReadString('ToDoMemo',IntToStr(i),''); end;
  finally
      ini.Free;
  end;
end;
Das wird auf die Dauer sehr unübersichtlich, wenn alles doppelt und dreifach im Quelltext erscheint.

Jetzt habe ich von einem Freund gehört, dass man diesen Teil auch als eingene Metthode deklarieren kann. Wäre nett, falls mit jemand erklären könnte, wie das gemeint war.

Johannes
  Mit Zitat antworten Zitat
Benutzerbild von Nersgatt
Nersgatt

Registriert seit: 12. Sep 2008
Ort: Emlichheim
693 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Eigene Deklaration

  Alt 19. Mai 2009, 14:03
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    p : integer;
    procedure SagHallo;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  SagHallo;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  SagHallo;
end;

Procedure TForm2.SagHallo;
begin
  ShowMessage('Hallo');
end;

end.
Jens
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Eigene Deklaration

  Alt 19. Mai 2009, 14:05
Du schreibst deinen Quelltext in eine eigene Prozedur und rufst diese auf:
Delphi-Quellcode:
type
  TFmMain = class...
  ...
  private
    procedure SaveToFile(FileName: String);
  end;

implementation

procedure TFmMain.SaveToFile(FileName: String);
var
  i: Integer;
  ini: TIniFile;
begin
  while Metext.Lines.Count < 46 do
  begin
    metext.Lines.Add('');
  end;
  ini := tinifile.Create(FileName);
  try
    for i := 0 to 46 do
      ini.WriteString('ToDoMemo', IntToStr(i), metext.Lines[i]);
  finally
    ini.Free;
  end;
end;

procedure TFmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveToFile('C:\ToDoJH.ini');
end;
// EDIT:
Wobei ein absolutes Verzeichnis schlecht ist.
An das Verzeichnis deiner Exe kommst du mit ExtractFilePath(ParamStr(0)), das ist zwar auch nicht optimal, aber besser als es direkt unter c: zu legen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#4

Re: Eigene Deklaration

  Alt 19. Mai 2009, 14:06
Delphi-Quellcode:
procedure TFmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  
    for I := 0 to 46 do
      ini.WriteString('ToDoMemo',IntToStr(i),metext.Lines[i]);
  
end;
Zitat:
Genau die selbe Methode rufe ich auch über einen Button auf:
Delphi-Quellcode:
procedure TFmMain.Load1Click(Sender: TObject);
begin
  
     for i := 0 to 46 do begin
        Metext.Lines[i] := ini.ReadString('ToDoMemo',IntToStr(i),''); end;
  
end;
doch nicht gleich ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#5

Re: Eigene Deklaration

  Alt 19. Mai 2009, 14:27
wie wäre es so?

Delphi-Quellcode:
procedure TFmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var I: Integer;
  ini: TIniFile;
begin
  ini := tinifile.Create('C:\ToDoJH.ini');
  try
    ini.WriteInteger('ToDoMemo', 'count', Metext.Lines.Count);
    for i := 0 to Metext.Lines.Count - 1 do
      ini.WriteString('ToDoMemo', IntToStr(i), metext.Lines[i]);
  finally
    ini.Free;
  end;
end;

procedure TFmMain.Load1Click(Sender: TObject);
var i: Integer;
  ini: TIniFile;
begin
  ini := tinifile.Create('c:\ToDojH.ini');
  try
    i := ini.ReadInteger('ToDoMemo', 'count', 0);
    for i := 0 to i - 1 do
      Metext.Lines.Add(ini.ReadString('ToDoMemo', IntToStr(i), ''));
    end;
  finally
    ini.Free;
  end;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Eigene Deklaration

  Alt 19. Mai 2009, 14:45
psst himitsu lies doch nochmal den ersten Beitrag.... "Metthode deklarieren" nicht "Code verbessern"
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
johannes-h

Registriert seit: 19. Mai 2009
29 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Eigene Deklaration

  Alt 19. Mai 2009, 15:58
Hallo,

erst mal vielen Dank dafür. Ich hatte nicht damit gerechnet, dass es so schnell geht.

Ich werde das jetzt entsprechend eurer Hinwiese ändern. Das gleiche funktioiniert dovh auch beim umbennen von Menüpunkten, oder?

Delphi-Quellcode:
private
procedure Deutsch;

...

procedure TFmMain.Deutsch;
begin
Label1.Caption := 'Hallo';
Label2.Caption := 'Auto';
end
Falls nicht, was müsste ich da machen, ich meine Parameter?


Johannes

@Nersgatt
Ich kann alles nachvollziehen, aber nicht, wofür die variable p verwendet/benötigt wird.

//EDIT

Ich habe falsche Quelltextteile unter falschen Namen gepostet ... Sorry,
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz