-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
26. Apr 2006
wenn Du die IniDatei mit dem OpenDialog geladen hast
kannst Du auf die Variable FileName des OpenDialogs zurückgreifen
Diese liefert Dir den Name der ausgesuchten Datei.
z.B. einBeispiel.ini
dann kannst Du die Funktion ChangeFileExt ausführen
um damit die Extension der iniDatei mit der Extension der rtfDatei
zu tauschen. Die Funktion ChangeFileExt findest Du in der SysUtils Unit, diese...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
26. Apr 2006
Du machst Dir in der IniDatei
- eine Section z.B. RTF-File
- einen Key z.B. Path
mit dem value des Pfades wo die Datei abgelegt ist, oder abgelegt werden soll
- eine key z.B. FileName
mit dem value des Dateinamens
das kannst Du mit WriteString und ReadString machen
Das RicheEdit Feld kannst Du dann mit richedit1.lines.savetofile(<DeinPfad+Dateiname>) abspeichern
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
26. Apr 2006
ja, dann viel Glück bei der Prüfung.
zwei Files in einem Speichern geht schon, ist aber umständlich.
Du mußt sie halt mit append zusammenführen, mußt sie aber auch bevor Du die
ini lesen kannst wieder auseinanderfriemeln.
save to file, ist doch eine Möglichkeit.
Da kannst Du den Name der ini erfragen und mit dem gleichen
Namen kannst Du ja auch das rtf File abspeichern...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
das liegt an der Windows API die läßt nur 1023 Zeichen pro Zeile zu.
siehe hier -> http://groups.google.de/group/borland.public.delphi.vcl.components.using/browse_thread/thread/ab4aace5aa421bf8/edc5ac819bc37e40?lnk=st&q=tinifile+readbinarystream&rnum=1&hl=de#edc5ac819bc37e40
daraus folgt:
-> den text in mehreren keys speichern - umständlich
-> den Text in ein seperates File speichern und...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
nun, bei mir in der Hilfe (delphi 6) steht die Einschränkung nicht.
Kannst ja mal bei WriteBinaryStream im TMemIniFile schauen ob es da
auch die Einschränkung gibt.
- und was versteht die Hilfe unter windows ini file?
- oder ist die Hilfe auch für Kylix gedacht gewesen?
RichEdit2.plainText:= false;
dann werden auch die Formatanweisungen richtig interpretiert.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
was ist denn auf 1023 Zeichen begrenzt?
TIniFile kann bis auf max 64KByte anwachsen,
wenn es größer gewünscht wird auf TMemIniFile umsteigen.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
ts:= TMemoryStream.Create;
try
ini.ReadBinaryStream('Beschreibung:','ts',ts);
ts.position:=0;
RichEdit2.lines.loadfromStream(ts);
finally
ts.Free;
end;
Grüße
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
Du hast doch nicht etwa noch diese da stehen?
ts:=ini.ReadBinaryStream('Beschreibung:','ts','');
das kann auch nicht gehen, weil wie oben beschrieben
ini.ReadBinaryStream einen Integer zurückgibt.
TMemoryStream und Integer vertragen sich halt so nicht.
Das sollte eigentlich so aussehen.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
ts:= TMemoryStream.Create;
try
ini.ReadBinaryStream('Beschreibung:','ts',ts);
ts.position:=0;
finally
m.Free;
Wie Du in der Hilfe siehst ist ReadBinaryStream vom Syntax etwas anders als
ReadString. Hier wird als dritter Parameter der Stream erwartet und nicht
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
nun, wenn Delphi installiert ist, ist in der Regel auch eine Hilfe dabei.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
Online Hilfe lesen und ReadBinaryStream finden
und bei Richedit loadfromStream.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
Korrektur:
ts sollte TMemoryStream sein,
vor dem Speichern des ts in die IniDatei
ts.position auf 0 setzen.
bei TStream ist die read und write Methode abstract
und muss so weit ich es weiß überschrieben werden.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
ts := TStream.Create; // stream Instanz erzeugen
Richedit1.PlainText:=false; // Textatribute werden mit in den Stream genommen
RichEdit1.Lines.SaveToStream(ts); // Richedit wird in dem stream gespeichert
// sichere den Stream in der ini Datei
ts.Free; // stream Instanz freigeben
wobei ts vom Typ TStream ist
Grüße
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
wenn Du den Richedit in ein TStream packen kannst,
solltest Du WriteBinaryStream und ReadBinaryStream verwenden können.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
Du liest den Wert aber als String ein, auch wenn dort nur eine Zahl stehen sollte.
Für Integerwerte gibt es WriteInteger und ReadInteger
Der dritte Wert ist der default Wert falls in der IniDatei unter dem Key nichts steht wird dieser Wert übergeben.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
procedure TForm1.Button5Click(Sender: TObject);
var
ini: TIniFile;
begin
try
ini := TIniFile.create(....); // <----------------
form1.left:=ini.ReadString('Programmname:','Edit1.Text',Edit1.Text);
finally
ini.free;
end;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
mit TIniFile kann man meines Wissens keine Kommentare in das iniFile einfügen.
Grüße
Klaus
-
Forum: Object-Pascal / Delphi-Language
Delphi
by Klaus01,
25. Apr 2006
procedure TForm1.Button4Click(Sender: TObject);
var
ini: TIniFile;
begin
ini:=TIniFile.create(ExtractFilePath(Application.exename)+Edit1.Text+'.btc');
ini.free; // <-------------
ini.WriteString('Programm:','Edit1.Text',Edit1.Text);
ini.free; <-- wenn, dann passt es hier hin.
end;