AGB  ·  Datenschutz  ·  Impressum  







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

Function/Procedure -Deklaration ?!

Ein Thema von fauxx · begonnen am 19. Apr 2004 · letzter Beitrag vom 20. Apr 2004
 
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Function/Procedure -Deklaration ?!

  Alt 19. Apr 2004, 17:15
Moin!

Dein letztes Beispiel haut dir der Compiler um die Ohren, er erlaubt es gar nicht eine Zuweisung auf a zu machen. Vielleicht nochmal ein Beispiel:

ExtractFileName(Const AFileName : String): String; Diese Funktion in der SysUtils holt dir aus dem übergebenen String den reinen Dateinamen heraus - auch wenn da nun noch ein Pfad oder Laufwerk davorsteht. Wenn du nun eine Variable s mit irgendeiner Datei + Pfadangabe hast in deinem Code und du brauchst nun nur den Dateinamen, z.B.

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender...)
Var
  s : String;
Begin
  If ( OpenDialog1.Execute ) Then
  Begin
    s := OpenDialog1.FileName;

    Label1.Caption := ExtractFileName(s);
 
    Memo1.Lines.LoadFromFile(s);
  End;
End;
Ein Beispiel: Du weisst s die voll qualifizierte Dateiangabe zu, damit du nicht immer den OpenDialog und die etwas langsameren Properties nutzen musst. Nun willst du auf einem Label1 den Dateinamen der aktuell geladenen Datei anzeigen, also ExtractFileName() aufrufen und das Ergebnis zu dem Label. Nun brauchst du aber für das Laden des Inhaltes der Datei in das Memo1 den voll-qualifizierten Dateinamen und daher kann man ja mal ins Grübeln kommen, ob nicht auch ExtractFileName() den übergebenen String maltretiert und nach dem Aufruf nur noch der Dateiname ohne Pfad in s drinne ist. Du kannst dir aber sicher sein, dass dem nicht so ist, weil der Parameter bei ExtractFileName() ist ein Const und daher wird der unter keinen Umständen verändert.

Vor allem ist Const auch eine Sache für den Compiler: Kann ich nun den Wert direkt auf den Stack pushen oder muss ich einen Zeiger auf die Variable nehmen. Z.T. ist es weniger Aufwand/Code den der Compiler bei einem Codeaufruf erzeugt und somit auch z.T. eine geringere Stackbelastung (aber in den seltensten Fällen, da ein Pointer mit 4 Bytes schon recht klein ist...).

MfG
Muetze1
  Mit Zitat antworten Zitat
 


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 19:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz