Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variable an txt Dateinamen anhängen (https://www.delphipraxis.net/158556-variable-txt-dateinamen-anhaengen.html)

Newcomer91 22. Feb 2011 08:23

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:
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;
Wie häng ich die Bezeichnung ans 'Vocabulary.txt' an?

Danke im vorraus.

DeddyH 22. Feb 2011 08:27

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:

Delphi-Quellcode:
extractFilePath(sDir);

ist komplett sinnfrei.

Newcomer91 22. Feb 2011 08:31

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

DeddyH 22. Feb 2011 08:41

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.

Newcomer91 22. Feb 2011 08:45

AW: Variable an txt Dateinamen anhängen
 
Das weiß ich doch, nur meine Frage ist wie ich das mache.

Delphi-Quellcode:
assignFile(txt, sDir + rb +'Vocabulary.txt');
Sowas würd beispielsweise nicht funktionieren, ist mir auch klar wieso.
Nur wie, muss ich das formulieren?

DeddyH 22. Feb 2011 08:49

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);

Deep-Sea 22. Feb 2011 08:57

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von DeddyH (Beitrag 1083400)
Ich weiß zwar nicht, wieso das so nicht funktionieren soll [...]

Weil "rb" wohl für RadioBox steht und nicht für einen String, der auf der Auswahl eben dieser basiert :-D

DeddyH 22. Feb 2011 08:58

AW: Variable an txt Dateinamen anhängen
 
Moooooment, im Ausgangspost heißt es
Zitat:

die string variable in der die Bezeichnung zugeordnet wird (Easy, Average, Hard oder Unusual) heißt rb und ist private deklariert.

Newcomer91 22. Feb 2011 08:59

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

Deep-Sea 22. Feb 2011 09:02

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...)

Newcomer91 22. Feb 2011 09:04

AW: Variable an txt Dateinamen anhängen
 
Es funktioniert.

Sir Rufo 22. Feb 2011 09:08

AW: Variable an txt Dateinamen anhängen
 
Wenn ich mal kurz den Klugscheißer wieder rauskramen darf, dann doch bitte das
Delphi-Quellcode:
sDir
in
Delphi-Quellcode:
sPath
umbenennen

DeddyH 22. Feb 2011 09:11

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...

Newcomer91 22. Feb 2011 09:13

AW: Variable an txt Dateinamen anhängen
 
Ich werde es berücksichtigen.

Jumpy 22. Feb 2011 09:36

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von DeddyH (Beitrag 1083416)
... möglichst nicht in Unterverzeichnissen des Programmverzeichnisses speichern und und und...

Mal wieder OT aus Neugier nachgefragt: Wieso?
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?

DeddyH 22. Feb 2011 09:41

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.

Newcomer91 22. Feb 2011 09:43

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.

DeddyH 22. Feb 2011 09:45

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.)

jfheins 22. Feb 2011 09:45

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von Jumpy (Beitrag 1083426)
Mal wieder OT aus Neugier nachgefragt: Wieso?
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?

Programmweite Einstellungen, Standardwerte, dll's und sowas kann ruhig in den Programmordner. Also alles, was sich die Benutzer teilen können.
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 ;)

Deep-Sea 22. Feb 2011 09:47

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von jfheins (Beitrag 1083433)
Programmweite Einstellungen, Standardwerte [...] und sowas kann ruhig in den Programmordner.

Kann es eben nicht. Man hat keine Schreibrechte - das hat DeddyH ja aber eben schon mal erwähnt :roll:
(Für portable Versionen ist beides natürlich uninteressant...)

jfheins 22. Feb 2011 09:49

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von Deep-Sea (Beitrag 1083434)
Zitat:

Zitat von jfheins (Beitrag 1083433)
Programmweite Einstellungen, Standardwerte [...] und sowas kann ruhig in den Programmordner.

Kann es eben nicht. Man hat keine Schreibrechte - das hat DeddyH ja aber eben schon mal erwähnt :roll:
(Für portable Versionen ist beides natürlich uninteressant...)

Bei der Installation sollte man schon welche haben. Und da die Standardeinstellungen nicht geändert werden sollte das schon passen. Außerdem könnte es ja sein, dass der Administrator schon gewisse Einstellungen treffen möchte, die dann für alle Benutzer verpflichtend sind.

Sir Rufo 22. Feb 2011 09:55

AW: Variable an txt Dateinamen anhängen
 
Zitat:

Zitat von jfheins (Beitrag 1083435)
Zitat:

Zitat von Deep-Sea (Beitrag 1083434)
Zitat:

Zitat von jfheins (Beitrag 1083433)
Programmweite Einstellungen, Standardwerte [...] und sowas kann ruhig in den Programmordner.

Kann es eben nicht. Man hat keine Schreibrechte - das hat DeddyH ja aber eben schon mal erwähnt :roll:
(Für portable Versionen ist beides natürlich uninteressant...)

Bei der Installation sollte man schon welche haben. Und da die Standardeinstellungen nicht geändert werden sollte das schon passen. Außerdem könnte es ja sein, dass der Administrator schon gewisse Einstellungen treffen möchte, die dann für alle Benutzer verpflichtend sind.

So isses :thumb:
Beispiel: die Lokalisierungs-Dateien

Deep-Sea 22. Feb 2011 09:58

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 10:42 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