AGB  ·  Datenschutz  ·  Impressum  







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

Funktion aufrufen

Ein Thema von ByTheTime · begonnen am 12. Nov 2011 · letzter Beitrag vom 12. Nov 2011
Antwort Antwort
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#1

AW: Funktion aufrufen

  Alt 12. Nov 2011, 18:34
Okay,
um jegliche Missverständnise zu vermeiden, mein Ziel:
Ich habe eine Art "Profilmanager", man gibt Daten in verschiedene EditFelder ein, z.B.: Zeit, Name, etc. Die Daten werden in ein Memo kopiert und als Textdatei gespeichert, unter einem Dateinamen, den man auch angegeben hat (MeinDateiname.txt). Möchte man dieses Profil später bearbeiten, wählt man in in der ComboBox das Profil aus. Damit das Profil in der ComboBox angezeigt wird, verwende ich beim FormCreate folgendes:

Delphi-Quellcode:
procedure TFormSettings.GetProfils;
var
  lDir: String;
  lSearchRecord: TSearchRec;
begin
  ComboProfil.Clear;
  lDir := AppDataPath + 'Profiles\';

  if FindFirst(lDir + '*.txt', faAnyFile, lSearchRecord) = 0 then
  begin
    repeat
      if (lSearchRecord.Attr <> faDirectory) then
       begin
         ComboProfil.Items.Add(lSearchRecord.Name);
       end;
    until
      FindNext(lSearchRecord) <> 0;
      FindClose(lSearchRecord);
  end;
end;
Allerdings lädt er auch die Endung, also ".txt" mit in die ComboBox. Das finde ich aber ziemlich unschön, deshalb möchte ich mit StringReplace die Endung suchen und entfernen (ersetzten gegen '').

Wie im Link zu sehen, ist dort eine Funktion, die muss ich ja wohl global deklarieren (da selbst implementiert):

Delphi-Quellcode:
public
 function StringReplace(S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string; //Fehler: "[DCC Fehler] Settings.pas(47): E2065 Ungenügende Forward- oder External-Deklaration: 'TFormSettings.StringReplace'"
end;
Im Implementationteil steht dann folgendes:

Delphi-Quellcode:
function StringReplace(S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
begin
s := StringReplace(s, '.txt', '', [rfReplaceAll, rfIgnoreCase]);
ShowMessage(s); //zum testen
end;
Jetzt möchte ich die Funktion aufrufen, wie folgt ('.txt' entfernen bevor das Element der ComboBox hinzugefügt wird):

Delphi-Quellcode:
procedure TFormSettings.GetProfils;
var
  lDir: String;
  lSearchRecord: TSearchRec;
begin
  ComboProfil.Clear;
  lDir := AppDataPath + 'Profiles\';

  if FindFirst(lDir + '*.txt', faAnyFile, lSearchRecord) = 0 then
  begin
    repeat
      if (lSearchRecord.Attr <> faDirectory) then
       begin
         //hier der Variable noch lSearchRecord.Name zuweisen, damit StringReplace ihn verwenden kann
         StringReplace; //hier der Fehler, wo ich es aufrufen möchte: "[DCC Fehler] Settings.pas(306): E2035 Nicht genügend wirkliche Parameter"
         ComboProfil.Items.Add(lSearchRecord.Name);
       end;
    until
      FindNext(lSearchRecord) <> 0;
      FindClose(lSearchRecord);
  end;
end;
So, ausführlich, jetzt erwarte ich auch unterstützung
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Funktion aufrufen

  Alt 12. Nov 2011, 18:40
ChangeFileExt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ByTheTime

Registriert seit: 24. Sep 2011
Ort: Frankfurt
297 Beiträge
 
Delphi XE2 Architect
 
#3

AW: Funktion aufrufen

  Alt 12. Nov 2011, 18:53
DANKE!! Es funktioniert!!!
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Funktion aufrufen

  Alt 12. Nov 2011, 19:06
So, ausführlich, jetzt erwarte ich auch unterstützung
Und ich erwarte endlich mal die Fehlermeldung!!!

OK. Zum einen ist die Bezeichnung deiner Methode mehr als unglücklich, da sie genauso heißt, wie die Funktion, die du in ihr aufrufst. Hinzukommt, dass die Bezeichnung völlig nichts sagend ist, was die Methode überhaupt macht. RemoveFileExtension wäre wesentlich besser. Zum Anderen gehört vor die Implementation der Methode noch der Klassenname:

Delphi-Quellcode:
function TFormSetting.RemoveFileExtension(Filename: string): string;
begin
  Result := ChangeFileExt(Filename, '')
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Funktion aufrufen

  Alt 12. Nov 2011, 20:59
Zitat:
Delphi-Quellcode:
function TFormSettings.StringReplace(S: string; OldPattern: string; NewPattern: string; Flags: TReplaceFlags): string;
begin
 Profil := StringReplace(Profil, 'guten', 'Schönen', [rfReplaceAll, rfIgnoreCase]);
 ShowMessage(Profil);
end;
Seh ich das grade falsch, oder sollte das nicht eigentlich in einerm Endlosschleife Stacküberlauf enden, da sich diese Methode immer wieder selber aufruft?
Ein Therapeut entspricht 1024 Gigapeut.
  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 11:12 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