AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Invalid Class Typecast

Ein Thema von Andidreas · begonnen am 18. Sep 2013 · letzter Beitrag vom 19. Sep 2013
Antwort Antwort
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 09:35
Hat zwar nichts driekt mit Deiner Frage zu tun, aber könntest Du den Source nicht aufräumen?

Durch Verwendung einer Liste für die Verwaltung Deiner Dateinamen und Memory Streams würde das um 80% schrumpfen und auf jeden Fall übersichtlicher werden. Und natürlich auch flexibler - Was geschieht denn momentan wenn Du ein Attachment 11 dazunimmst? Das SQL wird automatisch erweitert, aber Du müsstest dann neue Variablen einführen und an diversen Stellen Änderungen vornehmen.
Wie meinst Du das mit der Liste? Ich hab gestern z.B. sowas versucht:
Delphi-Quellcode:
   compName := 'ms' + IntToStr(i);
  (compName as TMemoryStream) := TMemoryStream.Create;
Hat aber nicht funktioniert...

Ein 11. Attachment ist nicht vorgesehen (und darf es nach meinen Vorgaben auch nie geben [wers glaubt...])...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.490 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 10:04
Z.b. so (ungeprüft):
Delphi-Quellcode:
type
  TAttachmentInfo = class
    Ms : TMemorystream;
    Fn : string;
  public
    destructor destroy; override;
  end;

{ TAttachmentInfo }

destructor TAttachmentInfo.destroy;
begin
  if Assigned(Ms) then
    Ms.Free;
  if fn <> 'then
    fn := emptystr;
  inherited;
end;

procedure TTmaintenance_testmailing_form.advGlowBtnClick(Sender: TObject);
var
 i : Integer;
 AttachInfo : TAttachmentInfo;
 AttachInfoList : TObjectList;
begin

   //Check Entries
   If (StringReplace(edt_mailproject.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Or
      (StringReplace(edt_mailapplication.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Or
      (StringReplace(edt_mailsubject.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Or
      (StringReplace(edt_mailsenderadress.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Or
      (StringReplace(edt_mailsendertext.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Or
      (StringReplace(edt_mailrecipient.Text, ' ', '', [rfReplaceAll]) = EmptyStr) Then
   Begin
     fnDisplayMyActionBox('ERR', 'Error', 'Entries are not complete!', EmptyStr, EmptyStr, EmptyStr, True);
     Exit;
   End;

   //Check count of Attachments
   If lstbox_attachments.Count > 10 Then
   Begin
     fnDisplayMyActionBox('ERR', 'Error', 'More than 10 Attachments!', 'Only max. 10 Attachments allowed!', EmptyStr, EmptyStr, True);
     Exit;
   End;

   AttachInfoList := TObjectList.Create;
   Try
     //Load Attachments in Memory Streams
     For i := 0 To lstbox_attachments.Count -1 Do
     Begin
       AttachInfo := TAttachmentInfo.Create;
       AttachInfo.Ms := TMemoryStream.Create;
       try
         AttachInfo.Ms.LoadFromFile(lstbox_Attachments.Items.Strings[i]);
         AttachInfo.Fn := fnGetFileName(lstbox_Attachments.Items.Strings[i]);
         AttachInfoList.Add(AttachInfo);
       Except
         On E:Exception Do
         Begin
           fnDisplayMyActionBox('ERR', 'Error', 'Could not load Attachment into Memory Stream', lstbox_Attachments.Items.Strings[i], E.Message, EmptyStr, True);
         End;
       End;
     End;

     //Insert Test Record into MS SQL Table Mail
     Try
       With (MSSQL_Query1) Do
       Begin
         Active := False;
         SQL.Clear;
         SQL.Add(' Insert Into "' + ModuleUniDBSchema + '.Mail" ');
         SQL.Add(' ( ');
         SQL.Add(' Mail_Project, Mail_Application, Mail_Subject, Mail_SenderAdress, Mail_SenderText, ');
         SQL.Add(' Mail_Recipient, Mail_CC, Mail_Message, Mail_AttachmentCount, Mail_Stati ');

         For i := 0 To lstbox_Attachments.Count -1 Do
         Begin
           SQL.Add(' , Mail_AttachmentName' + IntToStr(i+1));
           SQL.Add(' , Mail_Attachment' + IntToStr(i+1));
         End;

         SQL.Add(' ) ');

         SQL.Add(' Values( ');
         SQL.Add(' :Mail_Project, :Mail_Application, :Mail_Subject, :Mail_SenderAdress, :Mail_SenderText, ');
         SQL.Add(' :Mail_Recipient, :Mail_CC, :Mail_Message, :Mail_AttachmentCount, :Mail_Stati ');

         For i := 0 To lstbox_Attachments.Count -1 Do
         Begin
           SQL.Add(' , :Mail_AttachmentName' + IntToStr(i+1));
           SQL.Add(' , :Mail_Attachment' + IntToStr(i+1));
         End;

         SQL.Add(' ) ');

         ParamByName('Mail_Project').AsString := edt_mailproject.Text;
         ParamByName('Mail_Application').AsString := edt_mailapplication.Text;
         ParamByName('Mail_Subject').AsString := edt_mailsubject.Text;
         ParamByName('Mail_SenderAdress').AsString := edt_mailsenderadress.Text;
         ParamByName('Mail_SenderText').AsString := edt_mailsendertext.Text;
         ParamByName('Mail_Recipient').AsString := edt_mailrecipient.Text;
         ParamByName('Mail_CC').AsString := edt_mailcc.Text;
         ParamByName('Mail_Message').AsString := mem_mailtext.Text;
         ParamByName('Mail_AttachmentCount').AsString := IntToStr(lstbox_attachments.Count);
         ParamByName('Mail_Stati').AsString := '10';

         For i := 0 To lstbox_Attachments.Count -1 Do
         Begin
           ParamByName('Mail_AttachmentName'+IntToStr(i+1)).AsString := TAttachmentInfo(AttachInfoList[i]).fn;
           ParamByName('Mail_Attachment'+IntToStr(i+1)).SetBlobData(TAttachmentInfo(AttachInfoList[i]).ms.Memory, TAttachmentInfo(AttachInfoList[i]).ms.Size);
         End;

         ExecSQL;
       End;
     Except
       On E:Exception Do
       Begin
         fnDisplayMyActionBox('ERR', 'MS SQL Error', 'Could not insert Record into Mail Table!', E.Message, EmptyStr, EmptyStr, True);
       End;
     End;
   Finally
     AttachInfoList.Free;
   End;
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 10:29
An der folgenden Stelle bekomme ich eine Access Violation:
AttachInfoList.Add(AttachInfo); Access Violation in rtl150.bpl

Liegt das auch wieder an den Runtime Packages?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.490 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 10:38
Entweder das oder die Datei in der jeweiligen Listbox-Zeile existiert nicht.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 10:43
Die Datei existiert...
Ich hab jetzt auch die das rtl Package bei den Runtime Packages angegeben...

Der Fehler kommt weiterhin...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Invalid Class Typecast

  Alt 19. Sep 2013, 10:47
SORRY...
Mein Fehler... Ich hab das Create der AttachInfoList vergessen

So wenn ich das ganze jetzt noch in ne DLL bekomm ohne den ursprünglichen "Invalid Class Typecast" Fehler, dann bin ich happy
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz