![]() |
Variable an txt Dateinamen anhängen
Guten Morgen,
Mich würde brennend interessieren wie ich eine variable die im laufe des Programms festgelegt wird, anschließend an den Dateinamen einer neu zu erstellenden txt Datei anhängen kann. Die Vorgeschichte davon ist, dass ich zurzeit einen Vokabeltrainer programmiere. Nun legt man beim Anlegen neuer Vokabeln fest ob es sich um eine Vokabel der Kategorie Easy, Average, Hard oder Unusual handelt (Radio Button). Je nachdem was der Nutzer dann auswählt wird überprüft ob eine txt datei mit dem einer der vier Bezeichnungen .txt schon existiert, wenn nicht soll es halt neu angelegt werden. Hier der Code zum anlegen, die string variable in der die Bezeichnung zugeordnet wird (Easy, Average, Hard oder Unusual) heißt rb und ist private deklariert.
Delphi-Quellcode:
Wie häng ich die Bezeichnung ans 'Vocabulary.txt' an?
procedure TfrmInsert.btnSaveClick(Sender: TObject);
var txt: Textfile; sDir: String; begin sDir := ExtractFilePath(Application.Exename)+'Data\'; if ((rbEasy.Checked) or (rbAverage.Checked) or (rbHard.Checked) or (rbUnusual.Checked)) then if ((edtEnglish.Text <> '') and (edtGerman.Text <> '')) then begin if not DirectoryExists(sDir) then ForceDirectories(sDir); if not FileExists((sDir)+ 'Vocabulary.txt') then begin extractFilePath(sDir); assignFile(txt, sDir + 'Vocabulary.txt'); rewrite(txt); CloseFile(txt); end; end; end; Danke im vorraus. |
AW: Variable an txt Dateinamen anhängen
Ich verstehe nicht ganz, worauf Du hinauswillst. Soll der Dateinamen entsprechend der Kategorie geändert werden?
BTW: Zitat:
|
AW: Variable an txt Dateinamen anhängen
Also eine der vier Bezeichnungen soll an den Dateinamen angehangen werden, sollte dieser mit der angehangenden Bezeichnung noch nicht existieren.
Man wählt quasi eine Bezeichnung (easy,average,hard,unusual) Durch klick auf Radio button. Die ausgewählte Bezeichnung wird gespeichert in nem String, und anschließend wird es halt getestet ob schon vorhanden. Die Grundformulierung der txt Datei ist Vocabulary.txt Das Ergebnis soll sein z.B. klick auf Easy überprüfen easy vorhanden wenn nicht anlegen resultat: EasyVocabulary.txt |
AW: Variable an txt Dateinamen anhängen
Du hast einen fixen Teil("Vocabulary.txt") und einen variablen Teil. Den variablen Teil ermittelst Du anhand des RadioButtons und fügst ihn dann mit dem fixen Teil zum endgültigen Dateinamen zusammen.
|
AW: Variable an txt Dateinamen anhängen
Das weiß ich doch, nur meine Frage ist wie ich das mache.
Delphi-Quellcode:
Sowas würd beispielsweise nicht funktionieren, ist mir auch klar wieso.
assignFile(txt, sDir + rb +'Vocabulary.txt');
Nur wie, muss ich das formulieren? |
AW: Variable an txt Dateinamen anhängen
Ich weiß zwar nicht, wieso das so nicht funktionieren soll, aber Du kannst allein aus Gründen des besseren Verständnisses ja noch eine Zwischenvariable einführen.
Delphi-Quellcode:
const
fixerTeil = 'Vocabulary.txt'; var VocFilename: string; ... VocFilename := Format('%s%s%s',[sDir, rb, fixerTeil]); AssignFile(f, VocFilename); |
AW: Variable an txt Dateinamen anhängen
Zitat:
|
AW: Variable an txt Dateinamen anhängen
Moooooment, im Ausgangspost heißt es
Zitat:
|
AW: Variable an txt Dateinamen anhängen
genauso ist es.
Ich will einfach nur dass dieser String in rb an den Dateinamen angehangen wird. Ich werds ausprobieren, danke DeddyH |
AW: Variable an txt Dateinamen anhängen
@DeddyH:
Tja, wer lesen kann :oops: Ist ja aber auch ein total aussagekräftiger Name - solche Sourcecodes mag ich :roll: (Dann versteh ich aber auch nicht, warum das so nicht funktionieren sollte...) |
AW: Variable an txt Dateinamen anhängen
Es funktioniert.
|
AW: Variable an txt Dateinamen anhängen
Wenn ich mal kurz
![]()
Delphi-Quellcode:
in
sDir
Delphi-Quellcode:
umbenennen
sPath
|
AW: Variable an txt Dateinamen anhängen
Und sb in Kategorie, und statt einzelner RadioButtons gleich eine Radiogroup nehmen, möglichst nicht in Unterverzeichnissen des Programmverzeichnisses speichern und und und...
|
AW: Variable an txt Dateinamen anhängen
Ich werde es berücksichtigen.
|
AW: Variable an txt Dateinamen anhängen
Zitat:
Ist das nicht z.B. bei Ini-Dateien oder Bibliotheken oder Daten oft so? Wenn ich jetzt in C:\Programs in das Programmverzeichnis eines beliebigen Programmes schaue stehen da doch ausser der .exe meist auch noch jede Menge anderer Dateien. Oder bezieht sich das auf Ergebnisse, die ein Programm produziert. Sollen diese woanders gespeichert werden? |
AW: Variable an txt Dateinamen anhängen
Der vorgesehene Ort für Programme ist ja %ProgramFiles%. Dort hat man als Normaluser per Voreinstellung aber keine Schreibrechte, so dass die Virtualisierung einspringen muss, damit ältere Programme, die eben dies versuchen, noch lauffähig sind. Um dies zu vermeiden sollte man den Pfad zu einem für Programmeinstellungen vorgesehenen Verzeichnis ermitteln und dort speichern. Bei mobilen Anwendungen, die z.B. von einem USB-Stick gestartet werden verhält sich das natürlich anders.
|
AW: Variable an txt Dateinamen anhängen
Und dafür war es gedacht, zum benutzen direkt vom USB Stick aus. Darum verwende ich auch keine Datenbank, sondern einfache Textdateien.
|
AW: Variable an txt Dateinamen anhängen
Darum schrieb ich ja "möglichst nicht in Unterverzeichnissen...". Übrigens kann man auch eine Datenbank für mobile Anwendungen verwenden (SQLite, Firebird Embedded etc.)
|
AW: Variable an txt Dateinamen anhängen
Zitat:
Eigene Einstellungen, "Letzte Dokumente", Welche Plugins genutzt werden und sowas gehört irgendwo in den Benutzerordner (%appdata% ??), damit nicht Benutzer A die Hintergrundfarbe von Benutzer B ertragen muss ;) |
AW: Variable an txt Dateinamen anhängen
Zitat:
(Für portable Versionen ist beides natürlich uninteressant...) |
AW: Variable an txt Dateinamen anhängen
Zitat:
|
AW: Variable an txt Dateinamen anhängen
Zitat:
Beispiel: die Lokalisierungs-Dateien |
AW: Variable an txt Dateinamen anhängen
Solche Sachen ggf. schon, ja. Aber eben keine Einstellungen, die jeder normale Benutzer ändern darf. Darüber muss man sich halt im klaren sein.
PS: Wo sollten Lokalisierungs-Dateien denn sonst hingehören? :shock: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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