RichEdit ali Memo - Shranjevanje v stolpce

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Defcon » 08.04.2010 08:11:02

Hmm hvala! ...Text uporabljam zato ker bom formatiru text u html tabelce (pač se mi zdi še najlažja rešitev)

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Defcon » 08.04.2010 08:22:43

Zato ker uporabljaš "WriteLn" ki avtomatsko doda #13#10 na konec vrstice. Uporabi Write pa bo. Še vedno pa ne vem zakaj se mučiš s text datotekami če hočeš imeti strukturirane podatke.
Uporabi vsaj XML ali pa kaj drugega. PlainText format ni strukturiran in boš imel samo težave če mene vprašaš.


Hmm sem poskusu Write in tud z tem ne dela ....že zgubljam živčke....zakaj dela z memo in ne z richedit :S ...why god, why :D !

Uporabniški avatar
Lipe
Prispevkov: 232
Pridružen: 12.10.2005 11:31:25
Kraj: Kranj

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Lipe » 08.04.2010 10:37:25

....že zgubljam živčke....

Ej stari, tud za to mamo zdravilo. Reče se mu pir. Dva do trije primerki te pomirijo, počas jih konzumiraš na eni klopci nekje na soncu, ker dan je pa krasen. Pol nam pa še povej, kako pa zdej ne dela. Pa kodo pokaž.
Nič ni nič, pa tudi nekaj ni bogve kaj.

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Defcon » 08.04.2010 10:43:25

...mmm...na sončku se nadihat svežga zraka...pa grlo ozdravit z enim pirom ..to bo to :D !

to je pa moja cela koda kar se tiče shranjevanja:

Koda: Izberi vse

procedure TForm1.SaveFileClick(Sender: TObject);
var
  mojaDat : TextFile;
  saveDialog1 : TSaveDialog;
  imeDat : String;

begin
  saveDialog1 := TSaveDialog.Create(self);
  imeDat := 'SearchPoizvedba.txt';
  saveDialog1.InitialDir := GetCurrentDir;
  saveDialog1.Title := 'Save your text or word file';
  saveDialog1.Filter := 'Text file|*.txt|Word file|*.doc';
  saveDialog1.DefaultExt := 'txt';
  saveDialog1.FilterIndex := 1;

    if FileExists(imeDat) then begin
      ShowMessage(imeDat+' že obstaja! Prosim izberi drugo ime za datoteko!');
      saveDialog1.FileName := 'Prosim izberi drugo ime za poizvedbo.txt';

    end

    else begin
    ShowMessage(imeDat+' še ne obstaja');
    saveDialog1.FileName := 'SearchPoizvedba' +DateToStr(Date)+'.txt';
    end;

 if SaveDialog1.Execute then begin

    if Checkbox1.Checked then begin
    RichEdit1.Lines.SaveToFile(saveDialog1.Filename);
    AssignFile(mojaDat, saveDialog1.Filename);
    Append(mojaDat);
    WriteLn(mojaDat, ' ');
    WriteLn(mojaDat, RichEdit2.Text);
    CloseFile(mojaDat);
    end

    Else begin
    RichEdit5.Lines.SaveToFile(saveDialog1.FileName);
    AssignFile(mojaDat, saveDialog1.Filename);
    Append(mojaDat);
    WriteLn(mojaDat, ' ');
    WriteLn(mojaDat, RichEdit6.Text);
    CloseFile(mojaDat);
   end;


 end;

   saveDialog1.Free;

end;


kar ne razumem je to : zaradi limitacij Tmemo-ta (limitirano kolko char lahko maš v 1 vrstici ...v richedit je limita višja zato rabim slednjega)
sem zamenjal z RichE. in ne dela več...ista koda ....ampak da bi delalo pa ne :/ ......no ja ..slej ko prej bo rešitev že potrkala na vrata :)

Uporabniški avatar
Lipe
Prispevkov: 232
Pridružen: 12.10.2005 11:31:25
Kraj: Kranj

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Lipe » 08.04.2010 23:34:56

Hm, kaj ta rahlo eksotična koda dela? Najprej vsebino ene RichEdit komponente zapišeš v datoteko z metodo SaveToFile, se pravi besedilo z vsemi rtf tagi vred. Potem na konec te datoteke dodaš še vsebino druge RichEdit komponente, tokrat z metodo Lines.Text, ki predpostavljam vrne samo ascii vsebino, brez tagov. Zdaj, če ti je to namen, bi morala koda delati. Zna pa biti, da v večini editorjev tega drugega sklopa besedila sploh ne bo videti.
Nič ni nič, pa tudi nekaj ni bogve kaj.

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Defcon » 09.04.2010 07:53:13

Moj namen je točno ta ja, shraniti text obeh RE v 1 file (pač umes sem dodal eno vrstico fraj da se bolje vidi) .....sicer nevem zakaj ampak ta koda ne dela ...

Bo treba naštudirat če se da še na kakšen drugi način vse to napravit....mogoče dat vsak RE v svoj buffer pol pa iz njih v datoteko? ...mah nevem :) bomo videli

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a odisej » 09.04.2010 10:58:59

Človek, zadihej malo, dobro razmisli kaj vsak vrstica kode počne in potem od začetka.

Tole ti vsebino RichEdit1 shrani v nek fajl. Z rtf tagi vred. A razumeš kaj to pomeni?
RichEdit1.Lines.SaveToFile(saveDialog1.Filename);

Malo nižje kličeš tole. Ta shrani vsebino RichEdit5 v isti fajl. Se pravi si vsebino prvega izgubil. A razumeš?
RichEdit5.Lines.SaveToFile(saveDialog1.FileName);

Če bi rad vsebine obeh shranil v isti fajl eno za drugim, potem boš moral narediti kej v spodnjem stilu. Pa primer je za TMemo. Če delaš z RichEditi se boš verjetno želel znebiti rtf tagov:

Koda: Izberi vse

 
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  //vsebino obeh memotov zapiši v sl
  sl.Text := Memo1.Lines.Text + Memo2.Lines.Text;
  sl.SaveToFile(ime datoteke);
  sl.Free;
end;
 

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a odisej » 09.04.2010 11:08:50

Potem omenjaš neke stolpce in html. Sej ne vem točno, kaj bi rad. Lahko pa pripraviš nek svoj html, že s stolpci, besedilo v stolpcih pa recimo TUKAJ1 v prvem stolpcu in TUKAJ2 v drugem stolpcu. Potem pa to besedilo zamenjaš z Memo1 in Memo2:

Koda: Izberi vse

 
var
  sl: TStringList;
  i: Integer;
begin
  sl := TStringList.Create;
  sl.LoadFromFile(tvoj html);
  for i := 0 to sl.Count - 1 do
    if Pos('TUKAJ1', sl[i]) > 0 then
      sl[i] := StringReplace(sl[i], 'TUKAJ1', Memo1.Lines.Text, [])
    else if Pos('TUKAJ2', sl[i]) > 0 then
      sl[i] := StringReplace(sl[i], 'TUKAJ2', Memo2.Lines.Text, []);
  sl.SaveToFile(ime datoteke);
  sl.Free;
end;
Zadnjič spremenil odisej, dne 09.04.2010 11:09:44, skupaj popravljeno 1 krat.

Uporabniški avatar
Runner
Prispevkov: 1079
Pridružen: 03.02.2005 12:05:25

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Runner » 09.04.2010 11:53:16

In za take reči ima Delphi TPageProducer, ki dela natanko to. Zamenjuje tage na straneh z neko vsebino.

Defcon
Prispevkov: 35
Pridružen: 08.03.2010 14:07:37

RichEdit ali Memo - Shranjevanje v stolpce

OdgovorNapisal/-a Defcon » 09.04.2010 12:35:24

Človek, zadihej malo, dobro razmisli kaj vsak vrstica kode počne in potem od začetka.

Tole ti vsebino RichEdit1 shrani v nek fajl. Z rtf tagi vred. A razumeš kaj to pomeni?
RichEdit1.Lines.SaveToFile(saveDialog1.Filename);

Malo nižje kličeš tole. Ta shrani vsebino RichEdit5 v isti fajl. Se pravi si vsebino prvega izgubil. A razumeš?
RichEdit5.Lines.SaveToFile(saveDialog1.FileName);

Če bi rad vsebine obeh shranil v isti fajl eno za drugim, potem boš moral narediti kej v spodnjem stilu. Pa primer je za TMemo. Če delaš z RichEditi se boš verjetno želel znebiti rtf tagov:

Koda: Izberi vse

 
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  //vsebino obeh memotov zapiši v sl
  sl.Text := Memo1.Lines.Text + Memo2.Lines.Text;
  sl.SaveToFile(ime datoteke);
  sl.Free;
end;
 


A si ti mojo kodo pogledat ? Ker sklepam da ne ....kot sem rekel v mojem postu ...koda dela če je memo ampak ne če je RichEdit ....
V kodi mam APPEND zato ne kar izgubim oz povozim texta...drugo pa text ni še formatiran oz je plain text...mogoče je res glede taggov ..bom pogledal če zna to bit glavni krivec
Hvala

P.s. je precej bolj zakomplicirano in bom najverjetneje rabil 2 stringlista da mi bo skropucalo ven zaželjeno obliko
Zadnjič spremenil Defcon, dne 09.04.2010 12:38:04, skupaj popravljeno 1 krat.


Vrni se na

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost