Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ausfüllen von Lücken in einem langen Text? (https://www.delphipraxis.net/156461-ausfuellen-von-luecken-einem-langen-text.html)

Haris2201 2. Dez 2010 17:13


Ausfüllen von Lücken in einem langen Text?
 
Hi Leute,

Ich habe ein Programm, bei dem ich mehrere Edit-Felder habe.
Wenn ich jetzt auf Save drücke, sollen die Eingaben gespeichert werden.

Jedoch steht da dann z.B.:
Name:___User1____
Alter:____18_____
Und bei der Ausgabe soll stehen:
User1 ist 18 Jahre alt!

Danke schonmal!

SubData 2. Dez 2010 17:15

AW: Formular
 
Und was genau geht jetzt nicht, bzw. was genau hast du für ein Problem? :)

Luckie 2. Dez 2010 17:18

AW: Formular
 
Bitte gebe deinem ersten Beitrag einen aussagekräftigen Titel. Und mit Formular hat dein Problem wenig zu tun, wohl eher mit dem Abspeichern von Edits.

Haris2201 2. Dez 2010 17:30

AW: Formular
 
Sorry, mir ist halt nichts besseres eingefallen.

Also ich möchte gern wissen, wie ich das machen soll.
Wie kann ich einen vorgeschrieben (Lücken-)Text mit den Edits zusammen speichern?
Mit dem Speichern habe ich kein Problem.

Also ich stelle mir das so vor:

var i : irgendwas;
i:=('Blabla'+Edit1.Text+'.');


Jedoch ist mein Text viel zu lang...
Sagen wir der Text hat so um die 100-150 Zeilen.
Ich habe in meiner Form1 ca. 25 (Labeled-)Edits.
Fast jedes Feld braucht eine eigen Zeile in der fertigen Datei.


Schon mal danke!

Luckie 2. Dez 2010 17:34

AW: Formular
 
Zitat:

Zitat von Haris2201 (Beitrag 1065705)
Sorry, mir ist halt nichts besseres eingefallen.

Dann ändere es bitte. Und wähle bitte einen Titel, der etwas über dein Problem aussagt.

mkinzler 2. Dez 2010 17:35

AW: Formular
 
Ubd dein Problem versthe ich auch noch nicht ganz.

shmia 2. Dez 2010 17:38

AW: Formular
 
Geh' nochmal in Dich und versuche eine Beschreibung zu liefern was der Benutzer am Bildschirm sieht und was das Programm tun soll.

Du hast geschrieben "vorgeschrieben (Lücken-)Text"; willst du also so eine Art Textgenerator programmieren? :glaskugel:
Wenn das die Textvorlage ist:
Code:
Hallo $user$,
heute ist der $Datum$ und wir haben $Temp$ Aussentemperatur.
Gruß $Absender$
Dann könnte man z.B. alle Variablen zwischen den $-Zeichen durch jeweils ein Editfeld ersetzen.
Wie wäre das?

Haris2201 2. Dez 2010 17:46

AW: Formular
 
...
Ich glaube ich kann nicht richtig erklären.

Also, dann werde ich mal privater :-D

Ich habe einen Text.
Der Text ist ca. 100-150 Zeilen lang.
Das Programm soll die Infos(aus den Edit-Feldern und Comboboxen) auslesen und zum Text ergänzen.
z.B.
" Ein Mann Namens __________ geht
nach Hause. Sein
Haus liegt auf der _____-Straße.
Das Haus hat die Nummer __.
"
Und das soll die ganze Zeit so weiter gehen.

Die jeweiligen Lücken sollen dann durch Edits usw. ausgefüllt werden.


Der Text soll im Programm mit drinn sein (d.h. es soll keine Datei geben, die z.b. unfertig.txt heißt).

Ich habe das ganze mit t : string; versucht und dann den Text zu schreiben.
Aber bei t:=('Ein Mann Namens '+Edit1.Text+'...') war das zu lang. Außerdem kamen im Lückentext " ' " vor, also.
Und den Zeilenumbruch bekomme ich so auch nicht rein...




JA TEXTGENERATOR IST RICHTIG, ALSO SO WAS IN DER ART!

Haris2201 2. Dez 2010 18:09

AW: Formular
 
Zitat:

Zitat von shmia (Beitrag 1065713)
Geh' nochmal in Dich und versuche eine Beschreibung zu liefern was der Benutzer am
Dann könnte man z.B. alle Variablen zwischen den $-Zeichen durch jeweils ein Editfeld ersetzen.
Wie wäre das?

Garnicht mal so schlecht...
Wie würde dass denn dann aussehen?

Aber ich denke eher an so was wie oben beschrieben.
Gibt es nicht so was wie var i : string; und dann i.line1:='...', i.line2:='...', ... usw?

Um genau zu sein will ich ungefär so was machen:
<html>
<head>
<title>Edit1.Text</title>
</head>
</html>

Jedoch ist es wichtig, zu wissen, dass in diesem Code mehrere ' drin vorkommen, also wenn mann dann so was machen will:

var i : string;
i:='<title>'+Edit1+'</title>';

geht das nicht, weil z.B. der Code sowas hat:

<title='das ist nur ein example, das gibts in echt nicht'>

dan beendet Delphi den inhalt ab dem ersten ' bei dem HTML-Quellcode.

Ich weiss, dass ich mich nicht richtig ausdrücken kann, sry.

mkinzler 2. Dez 2010 18:11

AW: Formular
 
Ich würde "Textmarken" im Text setzen, und diese dann durch die Werte ersetzen lassen.

Code:
...
Name: $Name$
...

Haris2201 2. Dez 2010 18:15

AW: Formular
 
Zitat:

Zitat von mkinzler (Beitrag 1065727)
Ich würde "Textmarken" im Text setzen, und diese dann durch die Werte ersetzen lassen.

Code:
...
Name: $Name$
...

Ja, dass ist glaube ich gut.
Aber:
Wo soll ich den Text dann hinschreiben?

Dazu muss ich sagen, dass ich erst seit 1 Monat mit Delphi arbeite.

Könntest du mal ein Beispiel posten?

stahli 2. Dez 2010 18:27

AW: Formular
 
Schau Dir mal in der Hilfe "StringReplace" an, das sollte Dir weiter helfen...

Haris2201 2. Dez 2010 19:22

AW: Formular
 
Sry,
bei mir kommt von windows ein error.
Kannst du mir das mal erklaeren?
Ich versteh das nicht.

Bummi 2. Dez 2010 19:26

AW: Formular
 
Code schicken, Fehlermeldung schicken ...

fkerber 2. Dez 2010 19:29

AW: Formular
 
Ich ergänze:

Thread umbenennen...

Haris2201 2. Dez 2010 19:59

AW: Formular
 
wie benenne ich den thread um?

Mein Hilfe-Fenster sagt, dass windows keine infos finden konnte.

Jedoch bin ich jetzt so weit, dass ich nur noch folgendes brauche:
Wie mache ich innerhalb eines textes (z.B. edit1.text:='<?xml version='1.0'?>'), dass ich das so schreiben kann?
Durch diese zeichen vor und nach dem 1.0 kommt eine fehler meldung!

fkerber 2. Dez 2010 20:00

AW: Formular
 
Zitat:

Zitat von Haris2201 (Beitrag 1065759)
wie benenne ich den thread um?

Den ersten Beitrag bearbeiten und dort dann unter erweitert.

Bummi 2. Dez 2010 20:07

AW: Formular
 
Delphi-Quellcode:
s := '<?xml version=''1.0''?>';

Haris2201 2. Dez 2010 20:12

AW: Ausfüllen von Lücken in einem langen Text?
 
Lol,
Danke!

Aber ich habe immer noch ein Problem.
Wie kann ich jetzt meinen Text in meinen Quellcode (Delphi) miteinbauen, so dass die Textdatei nicht extern abgelesen werden muss?
Der soll ja bis zum ende unsichtbar sein, und wenn man dann speichert, soll dieser mit in die txt-datei (bzw xml-datei).
Ich habe keine ahnung wie ich das machen soll :?: :?:
Es wäre sehr nett, wenn ihr ein beispiel posten könntet.

Vllt. ist es, wenn ich euch sage, dass ich noch auf ein Gymnasium gehe und nicht auf eine Uni oder so, verständlicher, dass ich ab und zu so dumme fragen stelle xD

Bummi 2. Dez 2010 20:40

AW: Ausfüllen von Lücken in einem langen Text?
 
Delphi-Quellcode:
var
  Form1: TForm1;
Const C_TEMPLATE='Mein banz langer Text mit $Variablen'
                +'geht hier weiter'
                +'kann auch gaaaanz viele Zeilen haben'
                +#13#10'hier wäre jetzt eine neue Zeile'
                +'bzw: wg. HTML <br>hier eine neue Zeile'
                +'und den kann ich für StringReplace verwenden';

implementation

Haris2201 2. Dez 2010 20:43

AW: Ausfüllen von Lücken in einem langen Text?
 
Danke!
Genau das habe ich gesucht!

mfG

himitsu 2. Dez 2010 21:01

AW: Formular
 
Delphi-Quellcode:
MeinText := 'Hallo $User$,' + sLineBreak
  + 'heute ist der $Datum$ und wir haben $Temp$° Aussentemperatur.' + sLineBreak
  + 'Gruß $Absender$';

S := MeinText;
S := StringReplace(S, '$User$', Edit1.Text, []);
...
S := StringReplace(S, '$Temp$', IntToStr(DieTemperatur), []);
...
Und um die Verwirrung komplett zu machen, werfe ich mal einen Befehl in die Runde:
Delphi-Referenz durchsuchenFormat

Delphi-Quellcode:
MeinText := 'Hallo %s,' + sLineBreak
  + 'heute ist der %s und wir haben %d° Aussentemperatur.' + sLineBreak
  + 'Gruß %s';

S := Format(MeinText, [Edit1.Text, DateToStr(Now), DieTemperatur, Edit2.Text]);
Oder wie wäre es mit einem TValueListEditor, statt der vielen Edits?
Delphi-Quellcode:
s := DerText;
for i := 0 to ValueListEditor1.RowCount - 1 do
  s := StringReplace(s, '$' + ValueListEditor1.Cells[0, i] + '$',
    ValueListEditor1.Cells[1, i], [rfReplaceAll, rfIgnoreCase]);
Memo1.Text := s;

Haris2201 3. Dez 2010 14:34

AW: Ausfüllen von Lücken in einem langen Text?
 
Bei mir werden die variablen im Text nicht geändert...
Zitat:

var
s : string;
const conf='...&test&..'
+'...&lol&..'
.
.
.
s := conf;
S := StringReplace(S, '$test$', Edit2.Text, []);
S := StringReplace(S, '$lol$', Edit1.Text, []);
Zum Überprüfen habe ich einen Button namens Debug erstellt.
Der geht so
begin
showmessage(const);
end;

Jedoch kommt da nur mein Text mit ...&lol... und so, ohne die eingaben aus edit1.text.
Wieso ist das so??

DeddyH 3. Dez 2010 14:37

AW: Ausfüllen von Lücken in einem langen Text?
 
&test& ist ja auch etwas anderes als $test$.

Haris2201 3. Dez 2010 14:42

AW: Ausfüllen von Lücken in einem langen Text?
 
Sorry, ich habe beides mit $$, trotzdem selber Fehler.

stahli 3. Dez 2010 14:44

AW: Ausfüllen von Lücken in einem langen Text?
 
...dann muss es funktionieren.
Hast Du Unterschiede in Groß-/Kleinschreibung?

himitsu 3. Dez 2010 14:45

AW: Ausfüllen von Lücken in einem langen Text?
 
Wenn der letze Parameter [] ist, dann mußt du auch noch auf die Groß- und Kleinschreibung achten.



Delphi-Quellcode:
S := StringReplace(...

showmessage(const);
Delphi-Quellcode:
S
ist auch nicht
Delphi-Quellcode:
const
, wobei ich mal vermute, daß du hier
Delphi-Quellcode:
showmessage(conf);
meinst, aber das kommt auf's Selbe raus.

Haris2201 3. Dez 2010 14:53

AW: Ausfüllen von Lücken in einem langen Text?
 
Ist das schlimm wenn ich ein Labelededit1 benutze?

Also, ich schreib mal bisschen ab
Code:
var
s : string;
const conf='MEIN TEXT STEHT HIER MIT EINER $lol$.'
          +'BLBLBLBLBLBLB';
implementation
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
begin
s := conf;
s:=StringReplace(S, '$lol$', labeledEdit1.Text, []);
showmessage(conf);
end;

stahli 3. Dez 2010 14:56

AW: Ausfüllen von Lücken in einem langen Text?
 
Du änderst etwas in S, lässt Dir aber CONF anzeigen...

Haris2201 3. Dez 2010 14:59

AW: Ausfüllen von Lücken in einem langen Text?
 
Jo, das war's.

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 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