Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Funktionen einbinden ? (https://www.delphipraxis.net/75870-funktionen-einbinden.html)

Bastler 26. Aug 2006 10:43


Funktionen einbinden ?
 
Hallo;

Ich habe in meinen Code eine Funktion geschrieben, die ich ja, um sie zu benutzen, logischer weise deklarieren muss, ich wollte sie so einbinden

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function Form1.DownloadFile(Source, Dest: String): Boolean;
doch dann sagt mir der Compilier:
Zitat:

'='erwartet, aber '(' gefunden.
Was ist dadran falsch? Oder muss ich die ganz wo anders deklarieren?

Danke!!!

Balu der Bär 26. Aug 2006 10:52

Re: Funktionen einbinden ?
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    function DownloadFile(Source, Dest: String): Boolean;
Lass in der Deklaration das Form1 weg. ;)

Daniel B 26. Aug 2006 10:53

Re: Funktionen einbinden ?
 
Mach es besser ins private oder public rein, weiter unten im Typ TForm1 und mach auch das TForm1 im Namen weg, nur den Namen der Funktion selbst angeben.

Weiter unten schreibst du es so auf wie es jetzt ist.

Jürgen Thomas 26. Aug 2006 11:55

Re: Funktionen einbinden ?
 
Mein genereller Vorschlag lautet:

1. Im implementation-Abschnitt die Funktion/Prozedur beginnen:
Delphi-Quellcode:
function TForm1.DownloadFile(Source, Dest: String): Boolean;
begin
  ;
end;
2. Dann Strg-Umsch-C drücken - und Delphi setzt die Deklaration selbständig in der richtigen Schreibweise in den private-Bereich.

3. Nur dann, wenn die Funktion/Prozedur public benötigt wird, wird die Deklaration verschoben.

Gruß Jürgen

Bastler 26. Aug 2006 12:10

Re: Funktionen einbinden ?
 
Danke, es klappt...

Eine Frage noch, zum selben Thema:

Delphi-Quellcode:
function JPEGtoBMP(const FileName: TFileName):Tbitmap;
Comnpiler:
Zitat:

[Fehler] Unit1.pas(33): Ungenügende Forward- oder External-Deklaration: 'TForm1.JPEGtoBMP'
die Funktion selber sieht so aus:

Delphi-Quellcode:
function JPEGtoBMP(const FileName: TFileName):Tbitmap;
var
jpeg: TJPEGImage;
bmp: TBitmap;
begin
jpeg := TJPEGImage.Create;
try
jpeg.CompressionQuality := 100; {Default Value}
jpeg.LoadFromFile(FileName);
bmp := TBitmap.Create;
try
bmp.Assign(jpeg);
result:=bmp;
bmp.SaveToFile(ExtractFilePath(ParamStr(0))+'\temp.bmp');
finally
bmp.Free
end;
finally
jpeg.Free
end;
end;

Neutral General 26. Aug 2006 12:12

Re: Funktionen einbinden ?
 
Delphi-Quellcode:
function TForm1.JPEGtoBMP(const FileName: TFileName):Tbitmap; // <-- TForm1 nicht vergessen!
var
jpeg: TJPEGImage;
bmp: TBitmap;
begin
jpeg := TJPEGImage.Create;
try
jpeg.CompressionQuality := 100; {Default Value}
jpeg.LoadFromFile(FileName);
bmp := TBitmap.Create;
try
bmp.Assign(jpeg);
result:=bmp;
bmp.SaveToFile(ExtractFilePath(ParamStr(0))+'\temp.bmp');
finally
bmp.Free
end;
finally
jpeg.Free
end;
end;
;)

Gruß
Neutral General

Christian Seehase 26. Aug 2006 16:42

Re: Funktionen einbinden ?
 
Moin Jürgen,

Zitat:

Zitat von Jürgen Thomas
Mein genereller Vorschlag lautet:

1. Im implementation-Abschnitt die Funktion/Prozedur beginnen:
Delphi-Quellcode:
function TForm1.DownloadFile(Source, Dest: String): Boolean;
begin
  ;
end;
2. Dann Strg-Umsch-C drücken - und Delphi setzt die Deklaration selbständig in der richtigen Schreibweise in den private-Bereich.

3. Nur dann, wenn die Funktion/Prozedur public benötigt wird, wird die Deklaration verschoben.

Gruß Jürgen

Dazu eine allgemeine Anmerkung:
Das mit STRG-UMSCH-C funktioniert erst ab den Pro-Versionen.
In der PE muss man leider alles selber schreiben.

Jürgen Thomas 26. Aug 2006 17:09

Re: Funktionen einbinden ?
 
Zitat:

Zitat von Christian Seehase
Das mit STRG-UMSCH-C funktioniert erst ab den Pro-Versionen.
In der PE muss man leider alles selber schreiben.

Oh... Damit hatte ich nicht gerechnet, dass Borland selbst bei den IDE-Tastenkürzeln zwischen den Versionen unterscheidet. Nun ja...

@Bastler und viele andere hier im Forum
Bitte formatiert Eure Quelltexte besser: jeder Block sollte separat eingerückt werden, z.B.:
Delphi-Quellcode:
function TForm1.JPEGtoBMP(const FileName: TFileName):Tbitmap; // <-- TForm1 nicht vergessen!
var
  jpeg: TJPEGImage;
  bmp: TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100; {Default Value}
    jpeg.LoadFromFile(FileName);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      result:=bmp;
      bmp.SaveToFile(ExtractFilePath(ParamStr(0))+'\temp.bmp');
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;
Es liest sich einfach besser, und logische Fehler werden schneller erkannt!!!

Außerdem empfehle ich, auch vor 'end;' den Befehl mit Semikolon abzuschließen; das vereinfacht spätere Änderungen.

Gruß Jürgen

Hawkeye219 26. Aug 2006 17:18

Re: Funktionen einbinden ?
 
Hallo,

Zitat:

Zitat von Bastler
Delphi-Quellcode:
try
  bmp.Assign(jpeg);
  result:=bmp; // <<--- !
  bmp.SaveToFile(ExtractFilePath(ParamStr(0))+'\temp.bmp');
finally
  bmp.Free // <<--- ?
end;

Die Bitmap wird freigegeben, obwohl sie der Rückgabewert der Funktion ist?

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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