Speichern von StringList

Cuba Libre

Grünschnabel
Hallo,
ich habe hier inzwischen wohl das ganze Forum durchwühlt, aber bis jetzt konnte mir nichts helfen, mein Problem zu beheben.
Ich bin (noch) Schüler und wir sollen bis zum Wochenende ein Projekt in Info abgeben.

Mein Hauptproblem ist eigentlich, dass das dynamische Anlegen von Objekten bei mir nicht zu funktionieren scheint,
aber das krieg ich noch mit Alternativen behoben. Jetzt möchte ich aber ein paar Werte in einer txt speichern, und da lässt
sich das nicht umgehen :( Vielleicht kann einer mit mehr Durchblick als ich mal draufschauen.

Folgendes ist der Code zum Speichern:

Code:
TStringList *StringLi = new TStringList();   
	StringLi -> Add(Eingabe -> Text);             // + "\t" + Form4->Timer2 -> Tag); 
	StringLi -> SaveToFile(Save -> FileName);
	delete StringLi;

Compilieren funktioniert, aber beim Versuch zu speichern erhalte ich folgende Meldung:

Datei "" kann nicht erstellt werden. Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

Fragen hätte ich folgende:

1. Wie krieg ich ihn zum Speichern -> Was mache ich falsch?
2. Wenn ich die Parameterklammern für TStringList schreibe habe ich folgende Möglichkeiten: keine Parameter erwartet oder bool OwnsObject und const TStringList &
--> Wer owned hier was und was wird bei TStringList & erwartet ****
3. ähnliche Probleme habe ich beim dynamischen Anlegen von Images. Wenn da noch jemand einen Tipp hätte wäre ich froh und glücklich

Ich hoffe ich erschlag euch nicht :rolleyes:
 
Hi und Willkommen bei tutorials.de,

Frage 1: Dein Save.FileName ist das Problem.
Da sollte der Dateiname drinstehen, tut er aber nicht.
Woran das liegt kann man aus dem Codestück nicht erkennen.

Frage 2:
Wenn ein OwnsObject übergeben wird und true ist werden Elemente aus der Liste,
die wieder rausgenommen werden, auch gleich komplett gelöscht.
Und die TStringList&-Variante erstellt üblicherweise eine Kopie einer vorhandenen Stringlist.

Was Methoden machen auch hier nachlesbar: http://docwiki.embarcadero.com/Libraries/XE2/de/System.Classes.TStringList_Methods

Frage 3: Welches Image?
 
Hey, danke dass sich hier jemand mit solchen Lappalien befasst. Und vor allem für den Link, der ist klasse.

Viel mehr Code gibts zum Speichern eigentlich nicht...

Also müsste ich noch einen Dateinamen angeben, ja? Hab das jetzt mal in allen möglichen Varianten probiert, bekam aber immer nur Compilerfehler. Kannst du mir ein Musterbeispiel geben?

Meine Grundidee ist es, ein Snake-Spiel zu programmieren. Bin damit auch schon relativ weit gekommen. Ich wollte halt für jedes weitere Glied der Schlange ein neues Image erstellen, dass sich hinter den anderen herbewegt.

Vielleicht denk ich auch nur zu kompliziert ;)


//edit: Es heißt ja, zu ungewöhnlichen Uhrzeiten kommen einem die besten Ideen.
Hier mal ein Zwischenergebnis:

C++:
if(Key==VK_RETURN)
{
              AnsiString BListe = "Highscore.txt";

	TStringList *StringLi = new TStringList();  
	StringLi -> Add(Eingabe -> Text);// + "\t" + Form4->Timer2 -> Tag);        
	StringLi -> SaveToFile(BListe, TEncoding::UTF8);
	delete StringLi;


 Form1 ->Liste->Lines->LoadFromFile(BListe);

} else ;

Das ganze Problem schien zu sein, dass ich den SaveDialog benutzen wollte. Und die Sache mit dem FileName, die sheel bereits ansprach. Danke nochmal für den Hinweis sm_thanks.gif


Aktuell wird beim Drücken der Taste ENTER der Text aus einem Edit-Feld in die Highscore.txt gespeichert und anschließend im Memofeld ausgegeben.
Bezüglich des Speicherns wäre meine letzte Frage jetzt, wie ich es anstelle, dass er jeden Eintrag aus dem Edit-Feld in einer neuen Zeile speichert, denn im Moment überschreibt er jedes mal den alten.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück