/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Tekst fra pascal over i MS-Outlook
Fra : Jan Beyer


Dato : 24-09-02 20:37


Hej

Jeg har forsøgt at sende tekst over til MS-Outlook, i mit første
forsøg definerede jeg alle tekster som "string". Denne løsning
virkede, men jeg kunne ikke få linierne delt med #13#10!?

Derfor forsøger jeg, at definere teksterne som "PChar" for at kunne
udnytte "StrCopy", der kan kopiere CRLF ind i enden af hver string,
men nu går programmet ned - øv! Hvordan skal jeg gribe sagen an?

Er jeg på rette spor, eller skal jeg ..!?

Ja, jeg er ny ud i pascal programmering!

Et hint eller to vil blive modtaget med stor glæde!

----------------------------------------------------------------------------------------------------------------------------
procedure TForm3.BitBtn1Click(Sender: TObject);

var em_subject, em_body, em_mail, text0, text1, text2, text3, hilsen
:PChar;

begin
em_subject := 'This is the subject line';
text0 := ' ';
text1 := 'Linie 1';
StrCopy(text1,#13#10);
text2 := 'Mer' tekst bla bla bla';
StrCopy(text2,#13#10);
text3 := 'Venlig hilsen';
StrCopy(text3,#13#10);
hilsen := 'Jan Beyer';
StrCopy(em_body,'Hmm ---à');
StrCopy(em_body,text0);
StrCopy(em_body,text1);
StrCopy(em_body,text2);
StrCopy(em_body,text3);
StrCopy(em_body,hilsen);
StrCopy(em_mail,'mailto:test@jtbmail.dk?subject=');
StrCopy(em_mail,em_subject);
StrCopy(em_mail,'&body=');
StrCopy(em_mail,em_body);
ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);
FreeMem(text0);
FreeMem(text1);
FreeMem(text2);
FreeMem(text3);
FreeMem(hilsen);
FreeMem(em_body);
FreeMem(em_subject);
FreeMem(em_mail);
end;
----------------------------------------------------------------------------------------------------------------------------

 
 
Pølle (24-09-2002)
Kommentar
Fra : Pølle


Dato : 24-09-02 21:00

Hej Jan

Jeg bruger nedenstående.

Der vil forekomme mange linier og kommandoer, som du nok vil undre dig over,
men det er taget direkte ud at et af mine programmer uden at afluse linier,
som du ikke har brug for.

Pølle


procedure TDM.EMailStandard(EmailAdresse, EkstraText:String);
var Email:PChar;
LokStr,FormateringsString:String;
I:Byte;
begin
LokStr:=AnsiLowerCase(EmailAdresse);
if Pos('@',LokStr)=0 then exit;
if Pos(' ',LokStr)>0 then system.delete(LokStr,1,Pos(' ',LokStr));
For I:=Pos('@',LokStr)+1 to Length(LokStr) do if Copy(LokStr,I,1)=' '
then break;
System.Delete(LokStr,I,255);
if LokStr='' then exit;
FormateringsString:='mailto:'+LokStr+'?object=&body=FRA:';
if Revisorkunde then begin
if DM.TSetup['RevisorsSystem'] then begin
FormateringsString:=FormateringsString+'%0A%0DKundenr:
'+IntToStr(Kundenr);
FormateringsString:=FormateringsString+'%0A%0DNavn:
'+LicensejerNavn;
FormateringsString:=FormateringsString+'%0A%0DAdr:
'+LicensEjerAdresse;
FormateringsString:=FormateringsString+'%0A%0DPostnr/By:
'+LicensEjerPostnrBy;
FormateringsString:=FormateringsString+'%0A%0DTlf: '+LicensEjerTlf;
FormateringsString:=FormateringsString+'%0A%0DEmail:
'+LicensEjeremail;
end else begin
FormateringsString:=FormateringsString+'%0A%0DNavn:
'+DM.TSetup.FindField('RK.Kundenr').text;
FormateringsString:=FormateringsString+'%0A%0DNavn:
'+DM.TSetup.FindField('RK.Navn').text;
FormateringsString:=FormateringsString+'%0A%0DAdr:
'+DM.TSetup.FindField('RK.Adresse').text;
FormateringsString:=FormateringsString+'%0A%0DPostnr/By:
'+DM.TSetup.FindField('RK.PostnrBy').text;
FormateringsString:=FormateringsString+'%0A%0DTlf:
'+DM.TSetup.FindField('RK.Telefon').text;
FormateringsString:=FormateringsString+'%0A%0DEmail:
'+DM.TSetup.FindField('RK.Email').text;
end;
end;
FormateringsString:=FormateringsString+'%0A%0DProgramoplysninger: ';
if DM.TSetup['RevisorsSystem'] then begin
FormateringsString:=FormateringsString+'Navn: '+Application.Title+'
Revi - Version: '+OekoPlusVersion+' - Status: ';
if DemoMode then FormateringsString:=FormateringsString+'Demoudgave'
else FormateringsString:=FormateringsString+'Fuld Version%0A%0D';
end else begin
FormateringsString:=FormateringsString+'Navn: '+Application.Title+' -
Version: '+OekoPlusVersion+' - Status: ';
if DemoMode then FormateringsString:=FormateringsString+'Demoudgave'
else FormateringsString:=FormateringsString+'Fuld Version%0A%0D';
end;
LokStr:=' - Licenser: Finans';
if DebitorLicens then LokStr:=LokStr+' - Debitor';
if DebitorOrdreLicens then LokStr:=LokStr+' - Debitor Ordre';
if KreditorLicens then LokStr:=LokStr+' - Kreditor';
if KreditorOrdreLicens then LokStr:=LokStr+' - Kreditor Ordre';
if LagerLicens then LokStr:=LokStr+' - Lager';
if LagerOrdreLicens then LokStr:=LokStr+' - Lager Ordre';
if EkstraText<>'' then begin
While Pos(#10,EkstraText)>0 do begin
System.Insert('%0A',EkstraText,Pos(#10,EkstraText));
System.Delete(EkstraText,Pos(#10,EkstraText),1);
end;
While Pos(#13,EkstraText)>0 do begin
System.Insert('%0D',EkstraText,Pos(#13,EkstraText));
System.Delete(EkstraText,Pos(#13,EkstraText),1);
end;
LokStr:=LokStr+'%0A%0A%0D'+EkstraText;
end;
FormateringsString:=FormateringsString+LokStr;
GetMem(Email,length(FormateringsString)+1);
StrPCopy(Email, FormateringsString);
ShellExecute(0,'open',Email ,Nil,nil,SW_NORMAL);
FreeMem(Email);
end;
end;

"Jan Beyer" <jtboesterbro@sol.dk> skrev i en meddelelse
news:o7f1puklfneo26jqurshl1srfitgv444lp@4ax.com...
>
> Hej
>
> Jeg har forsøgt at sende tekst over til MS-Outlook, i mit første
> forsøg definerede jeg alle tekster som "string". Denne løsning
> virkede, men jeg kunne ikke få linierne delt med #13#10!?
>
> Derfor forsøger jeg, at definere teksterne som "PChar" for at kunne
> udnytte "StrCopy", der kan kopiere CRLF ind i enden af hver string,
> men nu går programmet ned - øv! Hvordan skal jeg gribe sagen an?
>
> Er jeg på rette spor, eller skal jeg ..!?
>
> Ja, jeg er ny ud i pascal programmering!
>
> Et hint eller to vil blive modtaget med stor glæde!
>
> --------------------------------------------------------------------------
--------------------------------------------------
> procedure TForm3.BitBtn1Click(Sender: TObject);
>
> var em_subject, em_body, em_mail, text0, text1, text2, text3, hilsen
> :PChar;
>
> begin
> em_subject := 'This is the subject line';
> text0 := ' ';
> text1 := 'Linie 1';
> StrCopy(text1,#13#10);
> text2 := 'Mer' tekst bla bla bla';
> StrCopy(text2,#13#10);
> text3 := 'Venlig hilsen';
> StrCopy(text3,#13#10);
> hilsen := 'Jan Beyer';
> StrCopy(em_body,'Hmm ---à');
> StrCopy(em_body,text0);
> StrCopy(em_body,text1);
> StrCopy(em_body,text2);
> StrCopy(em_body,text3);
> StrCopy(em_body,hilsen);
> StrCopy(em_mail,'mailto:test@jtbmail.dk?subject=');
> StrCopy(em_mail,em_subject);
> StrCopy(em_mail,'&body=');
> StrCopy(em_mail,em_body);
> ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);
> FreeMem(text0);
> FreeMem(text1);
> FreeMem(text2);
> FreeMem(text3);
> FreeMem(hilsen);
> FreeMem(em_body);
> FreeMem(em_subject);
> FreeMem(em_mail);
> end;
> --------------------------------------------------------------------------
--------------------------------------------------



Jan Beyer (24-09-2002)
Kommentar
Fra : Jan Beyer


Dato : 24-09-02 21:19

On Tue, 24 Sep 2002 22:00:18 +0200, "Pølle" <No@Name.dk> wrote:

>Hej Jan
>
>Jeg bruger nedenstående.
>
>Der vil forekomme mange linier og kommandoer, som du nok vil undre dig over,
>men det er taget direkte ud at et af mine programmer uden at afluse linier,
>som du ikke har brug for.
>
>Pølle

Hej Pølle,

OK - jeg var ikke helt på rette spor!

Jeg vil forsøge at sakse nogle af dine ideer ind i mit projekt. Mange
tak for hjælpen!

Venlig hilsen
Jan

Stig Johansen (24-09-2002)
Kommentar
Fra : Stig Johansen


Dato : 24-09-02 21:53

Hej.



"Jan Beyer" <jtboesterbro@sol.dk> wrote in message
news:o7f1puklfneo26jqurshl1srfitgv444lp@4ax.com...
>
> Hej
>
> Jeg har forsøgt at sende tekst over til MS-Outlook, i mit første
> forsøg definerede jeg alle tekster som "string". Denne løsning
> virkede, men jeg kunne ikke få linierne delt med #13#10!?

Prøvede du med eks.
text1 := 'Linie 1'+#13#10;

En streng er i princippet en PChar med ekstra intern info.

--

Med venlig hilsen/Best regards
Stig Johansen
Stig.Johansen@udvikling.it.dk
(remove dot dk)




Jan Beyer (24-09-2002)
Kommentar
Fra : Jan Beyer


Dato : 24-09-02 22:24

On Tue, 24 Sep 2002 22:52:48 +0200, "Stig Johansen"
<stig.johansen@udvikling.it> wrote:

>
>Prøvede du med eks.
>text1 := 'Linie 1'+#13#10;
>
>En streng er i princippet en PChar med ekstra intern info.

Hej Stig,

Allerførst skal det siges, at jeg har fået løst problemet ud fra det
meget udførlige eksempel Pølle sendte.

>text1 := 'Linie 1'+#13#10;
Ja, jeg prøvede det og nogle stykker flere. Jeg kunne ikke få den
ønskede CRLF effekt ud af #13#10.


Det jeg gjorde galt, var åbenbart at anvende #13#10 for CRLF i stedet
for %0D%0A.

Efter hjælp fra Pølle gjorde jeg følgende og vupti, så virkede det:

procedure TForm3.BitBtn1Click(Sender: TObject);
//Open Outlook Email Form

var em_subject, em_body, em_mail,
text0, text1, text2, text3,
hilsen: string;
// text0, text1, text2, text3, hilsen :PChar;
begin
// text1 := StrAlloc(20);
em_subject := 'This is the subject line';
text0 := ' ';
text1 := 'bla bla bla%0D%0A';
text2 := 'mere bla bla';
text3 := 'og til slut vil jeg bla bla bla %0D%0AVenlig
hilsen%0D%0AJan Beyer';
hilsen := 'Jan Beyer%0D%0A';
em_body := 'BLA BLA BLA.'+text0+text1+text2+text3+hilsen;
em_mail := 'mailto:jtb@jtbmail.dk?subject=' + em_subject + '&body=' +
em_body ;

ShellExecute(Handle,'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);

end;

Venlig hilsen
Jan

Jan Beyer (24-09-2002)
Kommentar
Fra : Jan Beyer


Dato : 24-09-02 22:43

On Tue, 24 Sep 2002 22:52:48 +0200, "Stig Johansen"
<stig.johansen@udvikling.it> wrote:

Hej Stig

I bogen MASTERING DELPHI 6 Copyright ©2001 fra forlaget SYBEX, ISBN:
0-7821-2874-2 side 128 fandt jeg i afsnittet om "New in System Unit"
at CRLF har værdien #13#10 - hurra tænkte jeg, og gik i gang med at
kode.

Jeg har nu lært, at det er ikke nok at læse overfladisk, jeg skal også
forsøge, at forstå det der står!


New in System Unit
---cut ---
There is a new DefaultTextLineBreakStyle variable, which can be set to
either tlbsLF or tlbsCRLF, and
a new sLineBreak string constant, which has the value #13#10 in the
Windows version of Delphi
and the value #10 in the Linux version. The line break style can also
be set on a file-by-file basis
with SetTextLineBreakStyle function.
---cut---

Venlig hilsen
Jan

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste