Autor Beitrag
lukas-a
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 17:23 
Hallo ,hab mich gerade hier angemeldet udn hoffe eure hilfe.
ich bin aus der übung ... bzw war nie besonders gut.
Hoffe es ist das richtige unterforum

Zu meinem Problem:
Ich möchte für einen Autohandel ein Programm schreiben das nach Eingabe der Parameter (Leistung,km,..) diese in ein html-code einfügt und dann als fertigen html-code ausgibt.
Klingt ja nicht schwer .

Habe dann folgendes gemacht.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
begin
    Memo4.Lines.Add('
<html>
<head>
</head>
<body>
<br>
<br>
<br>
<p></p>
<p class="MsoNormal"><font color="#333333"
 face="Arial" size="1"><span
 style="font-size: 9pt; font-family: Arial; color: rgb(51, 51, 51);">
<p> </p>
</span></font></p>
<p class="MsoNormal"><font color="#333333"
 face="Arial" size="1"><sp

doch dann kommen fehler dass das nicht geht . meine frage gibt es eine Möglichkeit den Html-code als memo oder ähnliches auszugeben?
und
Wie lasse ich die Parameter einfließen hatte eigentlich gedacht das es so geht

einfach im memotext/htmlcode
leistung:edit4.text

dann kommt aber ja nur edit4.text und nicht die eigentliche eingabe.Ich denke dies ist ein kleiner aber sehr dummer fehler.


Ich weiß echt nicht mehr wie es richtig geht ,hatte nur 1 jahr info in der schule un hab dann 1,5 jahren nichts mehr gemacht.


danke m vorraus

lukas

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconGausi: Topic aus Algorithmen, Optimierung und Assembler verschoben am Fr 12.12.2008 um 16:46
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 17:26 
Versuch es mal so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo4.Lines.Add('<html>');
  Memo4.Lines.Add('<head>');
  Memo4.Lines.Add('</head>');
  Memo4.Lines.Add('<body> ');
  //usw.
end;


Im Quelltext darf bei Stringliteralen kein Zeilenumbruch stehen. Den kannst Du zur Not auch händisch mit sLinebreak einfügen.
Chrischuh
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 124
Erhaltene Danke: 1

Win 7
Turbo Delphi
BeitragVerfasst: Fr 12.12.08 17:33 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 
procedure TForm1.Button1Click(Sender: TObject);
begin


with memo4.lines do
begin
clear;
add('<html>');
add('<head>');
//...
add('Leistung: '+edit4.text);
end;


end;
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 17:35 
vielen dank für dei schnelle hilfe, aber es ist ein sehr langer htmlcode jedes einzelne wort immer wieder zusatzen dauert ja ewigkeiten. gibt es nicht noch eine andere ausgabe möglichkeit?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 17:38 
Du könntest den HTML-String als Konstante hinterlegen, wobei Du für die variablen Teile ein "%s" (ohne Anführungszeichen) einfügst. Mit dem Format-Befehl kannst Du dann die variablen Teile einfügen, wobei die Anzahl der Parameter genau der Anzahl der "%s" entsprechen muss.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 17:41 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Memo4.Lines.Add('<html>'#13#10
    + '<head>'#13#10
    + '</head>'#13#10
    + '<body>'#13#10
    + ''#13#10
    + ''#13#10
    + ''#13#10
    ...

Besser wäre es aber vielleicht den Text als externe Datei oder in der Exe als Ressource mitzuliefern, sonst tippst du trotzdem lange.

Falls du ein neueres Delphi hast, kannst du auch per Makro die Änderung in den Zeilen machen.
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 17:45 
das mit dem formatbefehl versteh ich net ganz

hab ich mir auch überlegt könnte ich das als editordatei ausgeben?bzw.schon bei der exe mitgeliefert.
wie mach ich dann das sich die parameter ändern?

bzw. wie lad/speicher ich dann die editordatei?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 17:52 
Was ich meinte:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
const sText = '<html>'+sLineBreak+'<head>'+
                      sLineBreak+'<title>%s</title>'+
                      sLineBreak+'</head>'+sLinebreak+'<body>'+
                      sLinebreak+'%s'+
                     '</body>'+sLinebreak+'</html>';
begin
  Memo1.Text := Format(sText,['Eine Seite','Hallo Welt']);
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 17:57 
user profile iconlukas-a hat folgendes geschrieben Zum zitierten Posting springen:
bzw.schon bei der exe mitgeliefert.
wie mach ich dann das sich die parameter ändern?

bzw. wie lad/speicher ich dann die editordatei?
Wie du dann Text einfügst hat user profile iconDeddyH ja gerade demonstriert.

Mitliefern würde ich es als Ressource. Diese lädst du dann mit einem TResourceStream, kopierst diesen in einen TStringStream und hast dann den Text in der Eigenschaft DataString des TStringStream stehen. Darauf wendest du dann den Formatbefehl an.
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 18:17 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
const sText = '<html>'+sLineBreak+'<head>'+
                      sLineBreak+'<title>%s</title>'+
                      sLineBreak+'</head>'+sLinebreak+'<body>'+
                      sLinebreak+'%s'+
                     '</body>'+sLinebreak+'</html>';
begin
  Memo1.Text := Format(sText,['Eine Seite','Hallo Welt']);
end;
wenn ich das so übernehme kommt es zum fehler bei slinebreak :undefinierter bezeichner

das ist ja ganz gut nur muss ich auch den ganzen code mühsam umschreiben.
wie bekomm ich es hin das anstatt z.b. eine seite der inhalt von z.b. edit2.text übernommen wird

sorry für die vielen fragen ^^

Moderiert von user profile iconNarses: Zitat repariert
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 18:27 
user profile iconlukas-a hat folgendes geschrieben Zum zitierten Posting springen:
das ist ja ganz gut nur muss ich auch den ganzen code mühsam umschreiben.
Nicht wenn du es machst wie ich es gesagt habe und den Text aus einer Ressource lädst.
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 18:29 
hab noch nie mit TResourceStream und den dingen gearbeit wie gesagt nur 1 jahr schulinfo,und aus der hilfe werd ich auch net schlau draus.
pesi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 67
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 18:36 
Titel: LoadFromFile
Warum so kompliziert? Mach eine "Textdatei" (wie auch immer die Endung heißen mag) mit Deinem HTML-Inhalt und speicher sie lokal in dem Verzeichnis wo auch die Anwendung liegt.
Dann im Programm einfach Memo.Lines.LoadFromFile('DeineDatei.txt');

Wenn Du dann Deine anderen Sachen dort eingefügt hast, dann kannst Du das Memo einfach abspeicher wie z.B.: Memo.Lines.SaveToFile('MeineHTMLDatei.HTML');

...und wenn´s dann auch noch angezeigt werden soll, dann schau Dir mal "shellexecute" an, damit kannst Du die soeben abgespeicherte HTML-Datei im Browserfenster aufrufen.

Gruß Peter
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 18:51 
vielen dank

jetzt hab ich die html datei zumindestmal in meiner memobox aber wie bekomm ich jetzt noch meine parameter rein?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 18:53 
Memo.Lines.Insert(Zeilennummer,String)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 18:56 
Titel: Re: LoadFromFile
user profile iconpesi hat folgendes geschrieben Zum zitierten Posting springen:
Dann im Programm einfach Memo.Lines.LoadFromFile('DeineDatei.txt');
So ist es falsch und wird nicht immer funktionieren, nur zufällig und bei kleineren Programmen meistens.
www.delphi-library.d...ewtopic.php?p=499701

Wie es mit Ressourcen funktioniert:
Die Datei mit dem Code, z.B. MeineDatei.html, ins Unterverzeichnis Res.
ausblenden Res\MeineRes.rc
1:
NameDerRessource  TEXT  MeineDatei.html					

ausblenden Res\MeineRes.bat
1:
brcc32 MeineRes.rc					
Die Datei MeineRes.bat doppelklicken.

Im Code dann
ausblenden Delphi-Quelltext
1:
{$R Res\MeineRes.res}					

Und zum Benutzen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
  ResStream: TResourceStream;
  StringStream: TStringStream;
begin
  ResStream := TResourceStream.Create(hInstance, 'NameDerRessource''TEXT');
  StringStream := TStringStream.Create('');
  StringStream.CopyFrom(ResStream, ResStream.Size);
  ResStream.Free;
  ShowMessage(StringStream.DataString);
  StringStream.Free;
end;
An der Stelle mit ShowMessage kannst du dann stattdessen die Parameter einfügen.
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 21:22 
ich hab iwie immer noch probleme tortz der erklärungen

1 .
Zitat:
Memo.Lines.Insert(Zeilennummer,String)


ich möchte aus verschiedenen editx.text die inhalte an gewisse stellen im html-quelltext setzen . wie mach ich das ? ich denke damit kommt man nicht weit weil doch nirgends edit vorkommt.

der zweite post ist nach meinen vorstellungen nur mit zu viel arbeit.

2.
Zitat:
An der Stelle mit ShowMessage kannst du dann stattdessen die Parameter einfügen.


versteh ich ebenfalls nicht hab mehrere strings die ich an verschiedenen stellen im html code setzen möchte.

wie erstelle ich eine .rc datei bzw. eine solche .bat ?

hab mal bild angehangen so wie mein prog, aussieht .

gibt es noch ne andere ausgabevariante ? mit der man einfach den htmlcode einfügt und dann dort wo was hin soll edit1.text usw ersetzt?
Einloggen, um Attachments anzusehen!
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 21:27 
Wie bereits gesagt, den gesamten HTML-Code mit "%s"-Platzhaltern irgendwo ablegen, sei es als Ressource, als Konstante oder was weiß ich. Und dann setz Dich mal mit dem Format-Befehl auseinander, ein Beispiel hab ich bereits gepostet.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 12.12.08 22:03 
user profile iconlukas-a hat folgendes geschrieben Zum zitierten Posting springen:
wie erstelle ich eine .rc datei bzw. eine solche .bat ?
Das sind normale Textdateien, wie ja der Inhalt wohl nahelegt... :roll:

Und in deiner HTML-Datei fügst du dann die Platzhalter ein.
ausblenden Quelltext
1:
<title>%s</title>					
Und dann benutzt du den Format-Befehl wie oben schon gezeigt wurde oder wie es im Internet in x Beispielen zu sehen ist.

Und wenn du damit nicht klar kommst, dann zeig doch wie weit du bist und wo du nicht weiter kommst.
lukas-a Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 12.12.08 23:41 
www.file-upload.net/...312762/auto.rar.html viellt. kann mal jemand drüber sehn.

iwie gelingt es mir nicht die res datei zu erstellen. hab im quelltext die ersten edits zu %s geändert viellt. kann es ja mal einer angeben mit edit1.text oder so

dnake