Avatar billede mrfusker Nybegynder
20. november 2009 - 21:23 Der er 25 kommentarer

FindDialog i Codegear Delphi 2009

Hejsa,

Jeg er ved at programmere et lille tekstprogram i Codegear Delphi 2009.
Jeg vil gerne have en søgeboks, som kan søge i mit memo.
Jeg har prøvet adskillige eksempler, men af en eller anden grund kan jeg ikke få FindDialog til at virke.

Jeg får denne her fejl hver gang:
[DCC Error] hovedprogram.pas(159): E2003 Undeclared identifier: 'FindDialog1Find'

Jeg har prøvet at bruge eksemplet, som kan findes i Delphi Help men uden det store held.

Hvad har jeg gjort forkert?
Avatar billede martinlind Nybegynder
20. november 2009 - 22:06 #1
prøv med punktum imellem

FindDialog1.Find
Avatar billede mrfusker Nybegynder
20. november 2009 - 22:18 #2
Jeg har lige prøvet med et punktum mellem FindDialog1.Find.

Her er den kode jeg bruger til FindDialog.
Linjen under starter med linje 153 og ender med linje 181:
procedure TForm1.Sg1Click(Sender: TObject);
begin
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1.Find(Sender: TObject);
var Buffer, Pos, tPointer : PChar;
    BuffLength            : Word;
begin
  With Sender as TFindDialog do
  begin
      GetMem(tPointer, Length(FindText) + 1);
      StrPCopy(tPointer, FindText);
      BuffLength:= Tekstomraade.GetTextLen + 1;
      GetMem(Buffer,BuffLength);
      Tekstomraade.GetTextBuf(Buffer,BuffLength);
      Pos:= Buffer + Tekstomraade.SelStart + Tekstomraade.SelLength;
      Pos:= StrPos(Pos, tPointer);
      if Pos = NIL then MessageBeep(0)
      else
      begin
        Tekstomraade.SelStart:= Pos - Buffer;
        Tekstomraade.SelLength:= Length(FindText);
      end;
      FreeMem(tPointer, Length(FindText) + 1);
      FreeMem(Buffer,BuffLength);
      Tekstomraade.SetFocus;
end;
end;

Jeg har kaldt min memo for tekstomraade.

Yderligere fejlmeddelselser:
Build
  [DCC Error] hovedprogram.pas(158): E2037 Declaration of 'FindDialog1' differs from previous declaration
  [DCC Error] hovedprogram.pas(162): E2003 Undeclared identifier: 'Sender'
  [DCC Error] hovedprogram.pas(162): E2015 Operator not applicable to this operand type
  [DCC Error] hovedprogram.pas(164): E2003 Undeclared identifier: 'FindText'
  [DCC Error] hovedprogram.pas(164): E2008 Incompatible types
  [DCC Error] hovedprogram.pas(165): E2250 There is no overloaded version of 'StrPCopy' that can be called with these arguments
  [DCC Error] hovedprogram.pas(166): E2003 Undeclared identifier: 'Tekstomraade'
  [DCC Error] hovedprogram.pas(166): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(166): E2014 Statement expected, but expression of type 'Integer' found
  [DCC Error] hovedprogram.pas(168): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(169): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(169): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(174): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(175): E2066 Missing operator or semicolon
  [DCC Error] hovedprogram.pas(175): E2008 Incompatible types
  [DCC Error] hovedprogram.pas(177): E2008 Incompatible types
  [DCC Error] hovedprogram.pas(179): E2066 Missing operator or semicolon
  [DCC Fatal Error] Tekstprogram.dpr(6): F2063 Could not compile used unit 'hovedprogram.pas'
Output
  Build startede 20-11-2009 22:13:05.
Avatar billede hrc Mester
20. november 2009 - 23:53 #3
Der er flere fejl. Det er ikke her du skal angive et punktum. Martin troede det var i kaldet til søgedialogen. Desuden er det nu forskellig fra din procedure header (den i Interface-delen). Alle de andre fejl er følgefejl deraf.

Jeg ville prøve at fjerne/udkommentere alle steder hvor SoegDialog1Find fandtes, trykke save og derefter dobbeltklikke på søgedialogens OnFind og paste indholdet tilbage herind.

var
  BuffLength: Word;
  FindDialog: TFindDialog;
  Buffer, Pos, tPointer: PChar;
begin
  assert(Sender is TFindDialog);
  FindDialog := Sender as TFindDialog;

  GetMem(tPointer, Length(FindDialog.FindText) + 1);
  try
    StrPCopy(tPointer, FindDialog.FindText);
    BuffLength := Tekstomraade.GetTextLen + 1;
    GetMem(Buffer, BuffLength);
    try
      Tekstomraade.GetTextBuf(Buffer,BuffLength);
      Pos:= Buffer + Tekstomraade.SelStart + Tekstomraade.SelLength;
      Pos:= StrPos(Pos, tPointer);
      if assigned(Pos) then
      begin
        Tekstomraade.SelStart := Pos - Buffer;
        Tekstomraade.SelLength := Length(FindDialog.FindText);
      end
      else
        MessageBeep(0);
    finally
      FreeMem(Buffer);
    end;
  finally
    FreeMem(tPointer);
  end;
  Tekstomraade.SetFocus;
Avatar billede mrfusker Nybegynder
21. november 2009 - 00:33 #4
Nu kan jeg bygge programmet uden problemer, men når jeg prøver at søge i en .txt-fil (den filtype som mit program skal bruge) får jeg en fejlmeddelelse som lyder:
Debugger Exception Notification

Project Tekstprogram.exe raised exception class EAccessViolation with massage: 'Access violation at address 00401C3B in module 'Tekstprogram.exe'. Write of address 0044004E'.

Hvis jeg derefter lukket ned for mit program får jeg:
Debugger Exception Notification

Project Tekstprogram.exe raised exception class EStackOverflow with message 'Stack overflow'
Avatar billede hrc Mester
21. november 2009 - 00:57 #5
Meddelelserne er desværre ikke til stor hjælp. Stack-overflow kunne tyde på der var noget som loopede. Prøv at installere Madshi for 2009. Det er et modul som giver mange informationer om den fejl der måtte opstå i dit program. Madshi er gratis til private (http://www.madshi.net/). Alternativt må du vise lidt mere af programmet.
Avatar billede mrfusker Nybegynder
21. november 2009 - 01:12 #6
Jeg prøvede Madshi, men hvordan får jeg modulet ind i Delphi? Jeg er ikke så erfaren med Delphi :P

Her kommer hele mit programs kildekode:
//Jeg siger mange tak til de gode og letforståelige svar inde på www.eksperten.dk.
//Uden jeres hjælp, var jeg nok aldrig nået langt med programmet.
//Jeg siger tak til Delphi-PRAXiS
unit hovedprogram;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, Printers, StdCtrls, ComCtrls, ToolWin, OleCtrls, SHDocVw,
  ExtCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Filer1: TMenuItem;
    Ny1: TMenuItem;
    bn1: TMenuItem;
    Afslut1: TMenuItem;
    Gemsom1: TMenuItem;
    Om1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    PrintDialog1: TPrintDialog;
    Print1: TMenuItem;
    N1: TMenuItem;
    FontDialog1: TFontDialog;
    Indstillinger1: TMenuItem;
    Skrifttype1: TMenuItem;
    Rediger1: TMenuItem;
    Sg1: TMenuItem;
    Fortryd1: TMenuItem;
    N2: TMenuItem;
    Klip1: TMenuItem;
    Kopier1: TMenuItem;
    Stind1: TMenuItem;
    Vlgalt1: TMenuItem;
    Timer1: TTimer;
    Tekstomraade: TMemo;
    StatusBar1: TStatusBar;
    Funktioner1: TMenuItem;
    FindDialog1: TFindDialog;
    Gem1: TMenuItem;
    PrinterSetupDialog1: TPrinterSetupDialog;
    Udskiftsindstillinger1: TMenuItem;
    procedure Afslut1Click(Sender: TObject);
    procedure bn1Click(Sender: TObject);
    procedure Gemsom1Click(Sender: TObject);
    procedure Print1Click(Sender: TObject);
    procedure Ny1Click(Sender: TObject);
    procedure Skrifttype1Click(Sender: TObject);
    procedure Fortryd1Click(Sender: TObject);
    procedure Klip1Click(Sender: TObject);
    procedure Kopier1Click(Sender: TObject);
    procedure Stind1Click(Sender: TObject);
    procedure Vlgalt1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TekstomraadeChange(Sender: TObject);
    procedure Gem1Click(Sender: TObject);
    procedure Udskiftsindstillinger1Click(Sender: TObject);
    procedure Sg1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Afslut1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.bn1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    Tekstomraade.Lines.LoadFromFile(Opendialog1.FileName);
  end;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  BuffLength: Word;
  FindDialog: TFindDialog;
  Buffer, Pos, tPointer: PChar;
begin
  assert(Sender is TFindDialog);
  FindDialog := Sender as TFindDialog;

  GetMem(tPointer, Length(FindDialog.FindText) + 1);
  try
    StrPCopy(tPointer, FindDialog.FindText);
    BuffLength := Tekstomraade.GetTextLen + 1;
    GetMem(Buffer, BuffLength);
    try
      Tekstomraade.GetTextBuf(Buffer,BuffLength);
      Pos:= Buffer + Tekstomraade.SelStart + Tekstomraade.SelLength;
      Pos:= StrPos(Pos, tPointer);
      if assigned(Pos) then
      begin
        Tekstomraade.SelStart := Pos - Buffer;
        Tekstomraade.SelLength := Length(FindDialog.FindText);
      end
      else
        MessageBeep(0);
    finally
      FreeMem(Buffer);
    end;
  finally
    FreeMem(tPointer);
  end;
  Tekstomraade.SetFocus;
end;

procedure TForm1.Fortryd1Click(Sender: TObject);
begin
  Tekstomraade.Undo;
end;

procedure TForm1.Gem1Click(Sender: TObject);
begin
  if OpenDialog1.FileName <> '' then
  begin
  Tekstomraade.Lines.SaveToFile(OpenDialog1.FileName);
  end
  else GemSom1Click(Sender);
end;

procedure TForm1.Gemsom1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
  begin
    Tekstomraade.Lines.SaveToFile(SaveDialog1.FileName);
  end;
end;

procedure TForm1.Klip1Click(Sender: TObject);
begin
  Tekstomraade.CutToClipboard;
end;

procedure TForm1.Kopier1Click(Sender: TObject);
begin
  Tekstomraade.CopyToClipboard
end;

procedure TForm1.Ny1Click(Sender: TObject);
begin
  Tekstomraade.Clear;
  Statusbar1.Panels[6].Text := '';
  Statusbar1.Panels[8].Text := '';
  Caption := 'Tekstprogram - [Uden navn]';
end;

procedure TForm1.Print1Click(Sender: TObject);
var
  I, XPixelsPrTomme, YPixelsPrTomme, Margen,
  LinieHoejde, LinieTaeller: Integer;
begin
  if PrintDialog1.Execute then
  begin
    Printer.Canvas.Font := Tekstomraade.Font;
    XPixelsPrTomme := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
    Margen := XPixelsPrTomme;
    YPixelsPrTomme := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
    LinieHoejde := Round(Abs(Printer.Canvas.Font.Size) / 72 *
                        YPixelsPrTomme * 1.40);

    LinieTaeller := 3;
    Printer.BeginDoc;
    for I := 0 to Tekstomraade.Lines.Count - 1 do
    begin
      Inc(LinieTaeller);
      Printer.Canvas.TextOut(Margen, LinieTaeller * LinieHoejde, Tekstomraade.Lines.Strings[I]);
    end;
    Printer.EndDoc;
  end;
end;

procedure TForm1.Sg1Click(Sender: TObject);
begin
  FindDialog1.Execute;
end;

procedure TForm1.Skrifttype1Click(Sender: TObject);
begin
if fontdialog1.execute then Tekstomraade.font := Fontdialog1.font;
end;

procedure TForm1.Stind1Click(Sender: TObject);
begin
  Tekstomraade.PasteFromClipboard;
end;

procedure TForm1.TekstomraadeChange(Sender: TObject);
begin
  Statusbar1.Panels[6].Text := IntToStr(Tekstomraade.Lines.Count);
  Statusbar1.Panels[8].Text := IntToStr(length(Tekstomraade.Lines.Text));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Statusbar1.Panels[2].Text := TimeToStr(now);
  Statusbar1.Panels[4].Text := DateToStr(now);
end;

procedure TForm1.Udskiftsindstillinger1Click(Sender: TObject);
begin
    PrinterSetupDialog1.Execute;
end;

procedure TForm1.Vlgalt1Click(Sender: TObject);
begin
  Tekstomraade.SelectAll
end;

end.
(overstående linje er linje 225)
Avatar billede hrc Mester
21. november 2009 - 10:32 #7
Når madshi-collection er hentet hjem og installeret på din maskine, er den inde i Delphi. Ligger som et menupunkt under ... er det "projekt"? Sker der fejl kan du se den oprindelige fejltekst nederst i fejlrapporten ("Show report"), mens det sjove findes under stakken hvor man kan se linjen hvor det gik galt. I Delphi kan du endog dobbeltklikke på linjen for at komme til koden.

Jeg kigger på din kode i aften når jeg kommer i nærheden af en Delphi - hvis ikke Martin kommer først :-)
Avatar billede martinlind Nybegynder
21. november 2009 - 14:46 #8
hrc > Jep :-)
Avatar billede mrfusker Nybegynder
21. november 2009 - 16:59 #9
Så fik jeg trykket på kommentar og ikke svar :)

Der er ingen fejl at melde, når jeg bygger projektet.
Fejlen kommer først, når jeg prøver at søge efter et ord inde i mit program.

Jeg har fået tilføjet madshi-collection under komponenter. Hvordan bruger jeg det?
Avatar billede hrc Mester
21. november 2009 - 21:53 #10
Jeg kan godt få nedenstående til at virke, sådan da. Det er et lidt anderledes eksempel, men stadig fra Delphi-folkene selv.

Eneste fejl jeg kan se er, at søgning altid går fremad uanset hvilken søgeretning du vælger

type
  TfrmMain = class(TForm)
    pButtons: TPanel;
    RichEdit: TRichEdit;
    btnSearch: TButton;
    FindDialog: TFindDialog;
    procedure FindDialogFind(Sender: TObject);
    procedure btnSearchClick(Sender: TObject);
  private
  public
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btnSearchClick(Sender: TObject);
begin
  FindDialog.Execute;
end;

procedure TfrmMain.FindDialogFind(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
  mySearchTypes : TSearchTypes;
  myFindOptions : TFindOptions;
begin
  mySearchTypes := [];
  with RichEdit do
  begin
    if frMatchCase in FindDialog.Options then
      mySearchTypes := mySearchTypes + [stMatchCase];

    if frWholeWord in FindDialog.Options then
      mySearchTypes := mySearchTypes + [stWholeWord];

    { begin the search after the current selection if there is one }
    { otherwise, begin at the start of the text }
    StartPos := 0;
    if SelLength <> 0 then
      StartPos := SelStart + SelLength;

    { ToEnd is the length from StartPos to the end of the text in the rich edit control }
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(FindDialog.FindText, StartPos, ToEnd, mySearchTypes);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog.FindText);
    end
    else
      Beep;
  end;
end;
Avatar billede hrc Mester
21. november 2009 - 22:09 #11
Madshi er genial til at finde fejl med - især når kunderne får dem (har aldrig oplevet at det skete for mine kunder, men for alle jer andre kan det være praktisk). Modulet samler relevante oplysninger i en pakke som kan sendes til os (programmørerne).

Når Madshi er installeret vil den automatisk koble sig på dine programmer (tjek: Project/View source. Uses-sektionen indeholder 2 mad-units: madExcept og madLinkDisAsm).

Prøv at lave et program med en knap hvori du genererer en fejl:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Lav en fejl!
  ShowMessage('resultat: '+ FloatToStr(222 / 0));
end;


Dette vil udløse en DivByZero og nu skulle Madshi gerne tage over med en dialog hvor du kan vælge at sende en fejlrapport til en eller anden sagesløs person, se eller gemme den. Endelig kan du fortsætte- eller afslutte programmet (teksterne kan oversættes).

Prøv at vælge at se rapporten. Det første faneblad viser de generelle oplysninger, såsom OS, ram, tidspunkt, Delphi-version og nederst den sædvanlige fejltekst. På næste faneblad ser du stakken hvor du præcist kan se hvor den er opstået, her at den er opstået på linje xxx i dit program, eller 2 linjer nede i forhold til procedurens start
Avatar billede mrfusker Nybegynder
21. november 2009 - 22:10 #12
Jeg kan ikke få ovenstående til at virke i mit program. Det skyldes, at den er lavet til Richedit og ikke Memo.
Richedit er mere lig Wordpad og Word, mens Memo er til Notesblok. Det må være muligt at lave en søgefunktion i en memo, da der findes sådan en i Notesblok.

Jeg har prøvet at starte mit program udenfor Delphi, men får samme fejl :S
Avatar billede mrfusker Nybegynder
21. november 2009 - 22:10 #13
Hovsa... havde først lige set din sidste post
Avatar billede mrfusker Nybegynder
21. november 2009 - 22:21 #14
Jeg har prøvet at lave den fejl, som du beskrev i din sidste post.
Jeg kan se, at alle Madshi tingene er under komponenter, men de dukker ikke frem under Uses?
Avatar billede hrc Mester
22. november 2009 - 15:59 #15
Du skal ikke bruge komponenten til noget (der er kun een). Den bruges kun når der skal laves en speciel fejlhåndtering, eksempelvis tilføje et ekstra faneblad med oplysninger eller lignende.

Hvis du ikke har noget under uses så må den ikke være aktiveret for projektet. Går ind under Projects, Madshi og slå det til (tjek evt. igen under Show source), så burde du få nogle brugbare oplysninger.

Har du prøvet mit eksempel? Jeg har ikke vedhæftet den anden halvdel af koden, DFM-filen.
Avatar billede a_nor Nybegynder
23. november 2009 - 09:03 #16
Hej HRC,

Tak for oplysningerne om Madshi, jeg må straks smide en "plovmand" efter ham !

mvh
Avatar billede mrfusker Nybegynder
23. november 2009 - 16:52 #17
Jeg har prøvet din fejl med knappen, men får blot en besked: Resultat = INF

Madshi er nu dukket frem under Project i Delphi. Jeg får ikke længere fejlmeddelelsen i programmet, men derimod låser programmet. Jeg har sat flueben ved, at den skal forsætte med programmet, selvom den finder fejl.
Den fryser også, selvom jeg starter programmet udenom Delphi.

Så er jeg nødt til at "dræbe" programmet via Joblisten.

Windows Logbog har jeg fundet følgende:
- System

  - Provider

  [ Name]  Application Hang

  - EventID 1002

  [ Qualifiers]  0

  Level 2

  Task 101

  Keywords 0x80000000000000

  - TimeCreated

  [ SystemTime]  2009-11-23T15:46:32.000Z

  EventRecordID 8853

  Channel Application

  Computer ---

  Security


- EventData

  Tekstprogram.exe
  0.0.0.0
  11c
  01ca6c53e4f1881a
  5
  55006E006B006E006F0077006E0000000000


--------------------------------------------------------------------------------

Binære data:


I ord

0000: 006E0055 006E006B 0077006F 0000006E
0008: 0000   


I byte

0000: 55 00 6E 00 6B 00 6E 00  U.n.k.n.
0008: 6F 00 77 00 6E 00 00 00  o.w.n...
0010: 00 00                    ..

- System

  - Provider

  [ Name]  Windows Error Reporting

  - EventID 1001

  [ Qualifiers]  0

  Level 4

  Task 0

  Keywords 0x80000000000000

  - TimeCreated

  [ SystemTime]  2009-11-23T15:46:31.000Z

  EventRecordID 8852

  Channel Application

  Computer mrfusker

  Security


- EventData

  837468025
  5
  AppHangB1
  Intet
  0
  Tekstprogram.exe
  0.0.0.0
  4b0aad78
  7fd9
  0
   
   
   
   
   
  C:\Users\Thomas\AppData\Local\Temp\WER14C3.tmp.version.txt C:\Users\Thomas\AppData\Local\Temp\WER1BD9.tmp.appcompat.txt
  C:\Users\Thomas\AppData\Local\Microsoft\Windows\WER\ReportArchive\Report05383b46

De to tekstfiler er blot midlertidige, men den nederste har jeg fået følgende ud af:

Version=1
EventType=AppHangB1
EventTime=129034647814143950
ReportType=3
Consent=1
UploadTime=129034647831603770
Response.BucketId=837468025
Response.BucketTable=5
Response.type=4
Sig[0].Name=Programnavn
Sig[0].Value=Tekstprogram.exe
Sig[1].Name=Programversion
Sig[1].Value=0.0.0.0
Sig[2].Name=Tidsstempel for program
Sig[2].Value=4b0aad78
Sig[3].Name=Hængesignatur
Sig[3].Value=7fd9
Sig[4].Name=Hængetype
Sig[4].Value=0
DynamicSig[1].Name=OS-version
DynamicSig[1].Value=6.0.6002.2.2.0.768.3
DynamicSig[2].Name=Landestandard-id
DynamicSig[2].Value=1030
DynamicSig[22].Name=Ekstra hængesignatur 1
DynamicSig[22].Value=b98614c5c7ddd4eb668ee21e757f3043
DynamicSig[23].Name=Ekstra hængesignatur 2
DynamicSig[23].Value=177d
DynamicSig[24].Name=Ekstra hængesignatur 3
DynamicSig[24].Value=674df5ef42d1e29027181c5705fb1b2a
DynamicSig[25].Name=Ekstra hængesignatur 4
DynamicSig[25].Value=7fd9
DynamicSig[26].Name=Ekstra hængesignatur 5
DynamicSig[26].Value=b98614c5c7ddd4eb668ee21e757f3043
DynamicSig[27].Name=Ekstra hængesignatur 6
DynamicSig[27].Value=177d
DynamicSig[28].Name=Ekstra hængesignatur 7
DynamicSig[28].Value=674df5ef42d1e29027181c5705fb1b2a
UI[3]=Tekstprogram.exe svarer ikke
UI[4]=Hvis du lukker programmet, kan du miste data.
UI[5]=Luk programmet
UI[6]=Luk programmet
UI[7]=Luk programmet
State[0].Key=Transport.DoneStage1
State[0].Value=1
State[1].Key=DataRequest
State[1].Value=Bucket=837468025/nBucketTable=5/nResponse=1/n
FriendlyEventName=Stoppede med at svare og blev lukket.
ConsentKey=AppHangXProcB1
AppName=Tekstprogram.exe
AppPath=C:\Users\Thomas\Documents\RAD Studio\Projects\Anden program\Tekstprogram.exe
ReportDescription=Et problem medførte, at programmet ikke længere kommunikerer med Windows.
Avatar billede mrfusker Nybegynder
23. november 2009 - 16:52 #18
Et sidste ting. Der dukker ikke noget frem med Madshi inde i Delphi?
Avatar billede hrc Mester
25. november 2009 - 03:39 #19
a_nor: Madshi er det program jeg er har lært mig. Det er godt opbygget og der er rigelig med konstruktiv dokumentation og feedback.

Hvis man spørger Borrisholt er det EurikaLog der skal kastes penge efter. Umiddelbart fungerer det på samme måde som Madshi, men gør det vistnok bedre. Bl.a. skulle stak-trace være bedre. Kunne ikke se forskellene dengang jeg havde en 14-dages trial installeret.
Avatar billede hrc Mester
25. november 2009 - 03:48 #20
mrfusker: Hej Thomas. Jeg ved snart ikke hvad jeg kan gøre. Der har ALDRIG været problemer med Madshi hos mig. Mistænker det er en fejl-40 :-)

Jeg ved ikke hvilket flueben du sætter for, at programmet skal fortsætte ved fejl. Det kunne jeg egentlig godt lide at vide, for det er da ikke et flueben i Madshi-opsætningen?

Jeg forstår ikke hvad du mener spørgsmålet: Der dukker ikke noget frem med Madshi inde i Delphi?. Du bedes uddybe det så selv de fatsvage (bor i Odense) kan følge med.

Hvis du kører programmet i Delphi burde du kunne stoppe det ved at trykke på Ctrl-F2 (når du har skiftet til Delphi'en)
Avatar billede mrfusker Nybegynder
25. november 2009 - 20:10 #21
Okay :)

Om fluebenet:
Project -> madExpert settings.
Under 'on exception auto actions' og minioverskriften 'application control' og flueben ved 'automatically continue application'. Det betyder vel, at den forsætter med programmet... altså det program jeg forsøger at lave i Delphi?

Jeg mener, om der ikke kommer et faneblad eller lignende frem med fejlene i Delphi? Der blev nævnt tidligere i tråden, at der skulle være noget under 'Uses', som er blevet væk for mig :S

Jo, jeg kan godt stoppe mit program med CTRL+F2 inde i selve Delphi.

Skal jeg smide MadExceptionHandler1 fra Tool Palette ind i mit 'design'?

Folk fra Fyn er ikke dumme :-)
Avatar billede hrc Mester
27. november 2009 - 13:22 #22
Næ, men de taler bare mærkeligt, fynboerne, og har et kronisk mindreværdskompleks der udmønter sig i pinlige situationer såsom salget af Fynsværket på det tidspunkt hvor man taber 800 mio. på handlen, eller Tina Turner playback-koncerter. Eller skøre ideer om et kæmpestort Vandland (eller en kommende møgdyr bro over Odense kanal). Hvem var det nu der stod for det? Nåe ja. Det er vores nye borgmester. Jeg er selvsagt ikke glad for Laktasken er tilbage.

Hvis du siger programmet skal forsætte, så får du selvsagt ikke rapporten frem. Slå det fra og prøv igen.

Endelig, om du skal bruge TMadExceptionHandler. Nej, jeg skriver det gerne igen (og igen). Du skal ikke bruge komponenten ind medmindre du har brug for at lave noget helt specielt.
Avatar billede mrfusker Nybegynder
29. november 2009 - 12:46 #23
Jeg prøvede at gøre som du skrev - dog uden held. Så slog det mig, at jeg kunne prøve at bygge programmet med Delphi 2010, idet Madshi skulle kunne understøtte Delphi 2010.

MEN når jeg prøver at bygge programmet, får jeg følgende fejl:
[DCC Fatal Error] Tekstprogram.dpr(12): F1026 File not found: 'OKCANCL1.dcu'

  OKCANCL1 in 'd:\program files\codegear\rad studio\6.0\ObjRepos\DelphiWin32\OKCANCL1.PAS' {OKBottomDlg},
  ABOUT in 'ABOUT.pas' {AboutBox};
Avatar billede mrfusker Nybegynder
29. november 2009 - 22:33 #24
Der var nogle problemer med indstillingen af path's så jeg kan bygge programmet igen.

Jeg fandt en måde at udvide Messages i bunden af vinduet, og kan se, at Madshi kommer med i mit program.

Jeg tænkte om du har et screenshot af, hvordan det ser ud, når Madshi kommer med en bug-report?
Avatar billede hrc Mester
29. november 2009 - 23:17 #25
Ikke for at være kort for hovedet. Jeg synes spørgsmålet har udviklet sig lidt bisart og desuden er det altså ret godt beskrevet på hjemmesiden:

http://help.madshi.net/madExcept.htm
http://help.madshi.net/madExceptDemo.htm

Du bedes prøve demoen og når det er forsøgt, så eventuelt vende tilbage.
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