Avatar billede circadian Nybegynder
07. januar 2010 - 20:16 Der er 11 kommentarer og
1 løsning

Samle text-strenge og sætte dem sammen

Hej,

Jeg har godt og vel 20 forskellige Edit bokse hvori brugeren skal skrive alle mulige forskellige tekster. Alle disse tekster skal nu overføres til en txt-fil -- men txt-filen skal ikke kun genereres ud fra disse tekst-felter.

Hvis nu vi siger at txt-skabelonen ser således ud:

-----begynd------
Dette er en tekst txt1 og her er noget mere tekst txt2 blabla.
Her er linjeskift, og her kommer den næste tekst: txt3.

Efter dette dobbelte linjeskift kommer txt4 og her ses en html kode: <a href="txt5">txt1</a>.
------slut-------

Her er der brugt 5 forskellige tekst-strenge (kaldet txt1-5). Det ses desuden, at de skal proppes ind forskellige steder i skabelonen.

Jeg kan illustrere det med, at hvis txt1=hej og txt5=http://www.google.dk så kommer der til at stå:
<a href="http://www.google.dk">hej</a>
i sidste linje.


Jeg har mildest talt ingen anelse om hvordan jeg gør dette.


For det første skal jeg vel have gjort noget i denne stil:
txt1 := Edit1.Text;
osv., men jeg kan ikke få det til at fungere på denne måde -- aner heller ikke hvilken type variabel txt1 skal være.


Jeg vil sætte stor pris på et svar :)
Avatar billede vallemanden Nybegynder
07. januar 2010 - 21:59 #1
txt skal være af type string
og string kan ligges sammen
a:='dette er en ';
b:='test';
c:=a+b;
c vil så være 'dette er en test'
Avatar billede circadian Nybegynder
07. januar 2010 - 22:04 #2
Men hvordan laver jeg så det der står i Edit1 om til en string?
Avatar billede vallemanden Nybegynder
07. januar 2010 - 22:10 #3
var
a : string;
begin
a:= edit1.txt;
showmessage(a);
end;
Avatar billede vallemanden Nybegynder
07. januar 2010 - 22:14 #4
a:= edit.text;

skulle der stå
Avatar billede circadian Nybegynder
07. januar 2010 - 22:27 #5
Ok. Kan du så fortælle mig hvordan man laver en string der indeholder et linjeskift? Altså ved at kalde variablen skal der ske det samme som at trykke Enter i Notepad.

Eller også en string der, hvis vi følger mit eksempel ovenfor, indeholder følgende:

-----------
.

Efter
-----------
Avatar billede vallemanden Nybegynder
07. januar 2010 - 22:36 #6
a:=#13;
Avatar billede a_nor Nybegynder
07. januar 2010 - 23:29 #7
Hej,

Hvis du har din tekst (FIL) indlæst i Richedit1, kan du, hvis de tekster du vil erstatte er anført \TXT1, \TXT2 o.s.v udføre dette:

procedure TForm3.Button2Click(Sender: TObject);
  var i, pos_txt: integer;
begin
for i := 0 to self.ControlCount-1 do
  begin
  if Controls[i] is tEdit then
    with Controls[i] as tEdit do
    begin
      if tag <> 0 then
        begin
        pos_txt :=pos('\TXT'+inttoStr(tag),RichEdit1.TEXT);
        if Pos_txt > 0 then
          richedit1.text :=  copy(richEdit1.text,1,pos_txt-1) + text
            + copy( richEdit1.text,pos_txt+length('\TXT'+inttoStr(tag)  ) , length(richedit1.text))
        end;
    end;
  end;
end;

Du skal sørge for at sætte TAG på de Tedit kontroller du vil have overført. En form kunne være:

object Form3: TForm3
  Left = 716
  Top = 226
  Width = 385
  Height = 289
  Caption = 'Form3'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  Menu = MainMenu1
  OldCreateOrder = False
  OnCloseQuery = FormCloseQuery
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 116
    Top = 24
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Edit1: TEdit
    Tag = 1
    Left = 16
    Top = 56
    Width = 121
    Height = 21
    TabOrder = 1
    Text = 'Edit1'
  end
  object Edit2: TEdit
    Tag = 2
    Left = 16
    Top = 88
    Width = 121
    Height = 21
    TabOrder = 2
    Text = 'Edit2'
  end
  object Edit3: TEdit
    Tag = 3
    Left = 16
    Top = 112
    Width = 121
    Height = 21
    TabOrder = 3
    Text = 'Edit3'
  end
  object Edit4: TEdit
    Tag = 4
    Left = 16
    Top = 144
    Width = 121
    Height = 21
    TabOrder = 4
    Text = 'Edit4'
  end
  object Button2: TButton
    Left = 56
    Top = 192
    Width = 75
    Height = 25
    Caption = 'Button2'
    TabOrder = 5
    OnClick = Button2Click
  end
  object RichEdit1: TRichEdit
    Left = 160
    Top = 56
    Width = 185
    Height = 89
    Lines.Strings = (
      'RichEdit1 \TXT2 og \TXT3. Nu '
      'kommmer der lidt tekst \TXT4, og så '
      'det første: \TXT1'
      'SLUT')
    TabOrder = 6
  end
  object MainMenu1: TMainMenu
    Left = 52
    Top = 20
  end
end
Avatar billede circadian Nybegynder
07. januar 2010 - 23:26 #8
Tusind tak, det virker :)

(Bruger dog #13#10 i stedet for #13).
Avatar billede vallemanden Nybegynder
07. januar 2010 - 23:34 #9
svar
Avatar billede circadian Nybegynder
07. januar 2010 - 23:39 #10
a_nor,

Tak for din kommentar - forstår dog ikke formålet med al den kode :) Og det virker helt fint nu.
Avatar billede a_nor Nybegynder
07. januar 2010 - 23:53 #11
Nu er det faktisk kun button2click der har kode. Resten er med så du nemt kan teste det :-)
Avatar billede circadian Nybegynder
07. januar 2010 - 23:57 #12
Ah ok, takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester