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