Paragraf helle fra en tekst editor

I et tekstbehandlingsprogram, kan du arbeide på avsnitt og deretter helle theminto andre programmer som enkle linjer, innpakket av de som mottar vinduer. Her er hvordan å skrive dette inn i en vanlig tekst editor Avsnitt "helle" fra en teksteditor
av Gene [email protected]~~number=plural Merk:.
1:
Hvis du setter koden fra min flere artikler om MDI tekstredigeringsprogrammer i ett eksemplar av TextEdit, er det en korreksjon skal gjøres i SaveAs1Click rutine du har der. Den lineOpenFiles.Insert (Tag, Sti); bør skiftes byOpenFiles.Insert (0, Sti); Dette er viktig her, fordi du lagrer en ny fil blir berørt. Dine første testene vil utvilsomt bli gjort i en ny fil. Jeg antar TextEdit opprinnelige SaveAs1Click vil ikke prsent noe problem. Jeg tok i min kode fra veldig mye mer komplisert eWriter 2.
Test-bed for denne koden er Borland sin TextEdit demo som kommer med Delphi. Hvis du kompilere i Delphi 5 eller 5.01, må du ha den modifiserte forms.pas som jeg henvise deg til i min tidligere artikkel, Programming System /Next (Forrige) i MDI redaktører.
Du kan ignorere advarselen om 5,0x, fordi du ikke trenger å gjøre noe barne vindu håndtering. En skriftlig vindu er alt du trenger for å teste funksjonen. Jeg brukte funksjonen i min tekstforfatter, eWriter, å helle denne artikkelen inn på siden du leser akkurat nå. Du kan bruke TextEdit til å teste feature.Actually, TextEdit wraps linjer på vinduskanten og eksport avsnitt som enkle linjer. Du må utvide TextEdit langt nok utover linjen ender du oppretter med Enter-tasten for å forhindre glemme å gå inn slik at vinduet wraps. I eWriter, jeg bruker "-kolonnen wrap" så Enter brukes ikke for hver linje. Ideen i en teksteditor eller tekstforfatter, skjønt, er at du har en kolonne wrap eller bruk Enter-tasten. Shaping teksten er forfatterens valg. Det er ikke en bekk. Men forfatteren, da, kan det være lurt å helle tekst i noen vinduer og la dem pakke eller, som jeg gjør med Outlook Express, la programmet wrap. OE brytes når det sender
text.TextEdit er en vanlig
tekst editor. Jeg sier ordinære snarere enn vanlig, fordi det er skrevet ut 8-bits tegn, men det er vanlig at det er ikke anbefale en RTF redaktør. Det er nærmere Notepad enn til Wordpad. Men som du vet, er det i en RichEdit kontroll. Dette gjør at en god del av magi. Ønsker visuelle bokmerker? Marker tekstblokker (setninger, titler, etc.) og farge dem røde. Deretter kan du bla blant dem raskt. Eller, hvis du jobber med html-filer, farge kodene på lasting (som et alternativ). Du kan gjøre alle disse tingene Backstage
i RichEdit og disse fargestoffer ikke påvirke din tekst i det hele tatt. På den annen side, at du ønsker å skrive ut html tekst med fargede koder. Eksporter til en annen fil som rtf Hotell og print fra Wordpad.In koden under, bruker jeg et par minne bekker å kjøre teksten gjennom og trekke ut alle # 13 # 10 unntatt der det er to, slik at tomme linjer som skiller avsnittene gjenstår å separere de fylte linjer. Editor.PlainText er satt til False i begynnelsen og tilbake til True på slutten. Dette er hvordan den magiske boksen fungerer. Ingen tvil om min lesning og endre teksten strømmen kan forenkles, men dette fungerer Menyelement.
Caption: Trekk n linjer inn 1Name: NLinestoOne1 kode:
prosedyre TEditForm.NLinestoOne1Click (Sender: TObject); etikett Skip; Var Stream1, Stream2: TMemoryStream; p, q: PChar; c: Char; IsPar: integer; prosedyre SetStreams, begynne hvis Editor.Text < > '' Da Editor.PlainText: = False annet Avslutt; Stream1: = null; Stream2: = null; prøve Stream1: = TMemoryStream.Create; Stream2: = TMemoryStream.Create; Stream1.SetSize (longInt (Lengde (Editor.Text))); Editor.Lines.SaveToStream (Stream1); Stream2.SetSize (2 * Stream1.Size); p: = Stream1.Memory; q: = Stream2.Memory, unntatt hvis Stream1 < > nil deretter Stream1.Free; hvis Stream2 < > nil så Stream2.Free; ende; end; '. av tomme linjer trukket opp i enkeltlinjer Du kan "begynne hvis messageDlg (' Du vil kanskje linjene i blokkene skilt '+ +' ønsker avsnitt uten linjeskift, slik at de kan bryte på . '+' en vinduskant dette vil gjøre det '# 13 # 13 +'. ADVARSEL: dette behandler hele filen Hvis du ønsker å søke "+" dette til bare en blokk fra filen, flytte den til et annet vindu ". + 'og behandle den der før du flytter den tilbake.', mtInformation, [mbOK, mbCancel], 0) = mrCancel deretter Avslutt; Hvis Editor.Text = '' deretter Avslutt; IsPar: = 0; prøve SetStreams; Selv ikke (p ^ = # 0) gjør begynne c: = p ^; inc (p); if (IsPar = 4) og (c = '') da IsPar: = 5 else if (IsPar = 3) og (c = 'r') så IsPar: = 4 else if (IsPar = 2) og (c = ' en ') så IsPar: = 3 else if (IsPar = 1) og (c =' p ') så IsPar: = 2 annet hvis c =' \\ 'da IsPar: = 1 annet IsPar: = 0; if (IsPar = 5), og start hvis ikke (p ^ = # 13) så q: = q - 4 //fjerner \\ par, blader følgende plass ellers begynne desember (q ^); q ^: = c; inc (q); q ^: = '\\'; inc (q); q ^: = 'p'; inc (q); q ^: = 'a'; inc (q); q ^: = 'r'; inc (q); p: = p + 7; //Hopp # 13 # 10 \\ par (sp) ende; slutt; q ^: = c; inc (q); hvis p ^ = # 0 da q ^: = # 0; slutt; Editor.Text: = ''; Editor.Lines.LoadFromStream (Stream2), og endelig hvis Stream1 < > nil deretter Stream1.Free; hvis Stream2 < > nil deretter Stream2.Free; Editor.PlainText: = true; Editor.Modified: = True; ende; end;
Interlaced Bibliografi
begynte jeg ad-libbing disse artiklene på å gjøre noen av de tingene jeg gjør i eWriter i Delphi demo TextEdit (som jeg bygget eWriter ). Det er naturlig å samle alle disse i ett eksemplar av TextEdit. Og du kan ha til å gå frem og tilbake for å fylle på ny, savnet, eller endret supportrutiner. Boxed merknader vises de fleste steder. Figur det pågående "butikk" samtale ...


    Programming System /Next (Forrige) i MDI editorshttp: //www.HowToDoThings.com/showarticle.asp article = 143


    Selektiv teglstein i MDI Editorshttp: //www.HowToDoThings.com/showarticle.asp article = 147

    Sporings Vindu tall i MDI Editorshttp: //www.HowToDoThings.com/showarticle.asp article = 154

    Avsnitt "helle" fra en tekst editorhttp: //www.HowToDoThings.com/showarticle Asp? article = 178



    Previous: