Avatar billede malm Nybegynder
18. marts 2002 - 17:12 Der er 5 kommentarer og
1 løsning

Overførelse af data fra modal forms

Kompileren bliver sur når jeg forsøger at oversætte medfølgende kode. Det jeg ønsker er at ved kald af OpretDisk' constructor overføres en pointer således data kan udveksles mellem dialog og main før dialog frigøres fra memory. Koden er tæt på en tro kopi af Delphi 6 side 6-11.


unit OpretDisk;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TdlgOpretdisk = class(TForm)
    lbComputerId: TStaticText;
    computerId: TEdit;
    bntOpret: TButton;
    bntAfslut: TButton;

  private
    PMyString: ^String;
  public
    constructor OpretDisk(p: Pointer; Owner: TComponent);
  end;

implementation


{$R *.dfm}

constructor OpretDisk(p: Pointer; Owner: TComponent);
begin

      PMyString := p;
      String(PMyString^) :='';
end;

end.

Mvh
Malm
Avatar billede martinlind Nybegynder
18. marts 2002 - 17:16 #1
hvilken fejl får du ??
Avatar billede cms Nybegynder
18. marts 2002 - 17:18 #2
prøv at skrive:

constructor TdlgOpretdisk.OpretDisk ...
Avatar billede martinlind Nybegynder
18. marts 2002 - 17:24 #3
evt sådan :

constructor TdlgOpretdisk.OpretDisk( aStr: String; Owner: TComponent);
begin
  aStr := '';
end;

Du kan sagtens bruge andre typer en pointer til overførsel af data.
Avatar billede cms Nybegynder
18. marts 2002 - 17:26 #4
lige mine ord :)
Avatar billede malm Nybegynder
18. marts 2002 - 19:45 #5
Ja ok jeg manglede TdlgOpretdisk hvilket jeg ellers havde på et tidligere tidspunkt men havde fjernet for at lokalisere andre fejl. Grunden til pointeren er:

procedure TMain.mnCreateDiskClick(Sender: TObject);
var computerId: String;
begin
  GetComputerId(@computerId);
  if computerId <> '' then
      ShowMessage(computerId);

end;

procedure TMain.GetComputerId(PString: Pointer);
var myDisk: TdlgOpretdisk;
begin

  myDisk := TdlgOpretdisk.OpretDisk(PString, self);
  myDisk.Visible := false;
  myDisk.ShowModal;
  myDisk.Free;
end;

Jeg får i øvrigt "Cannot create window while visible" fejl ved showmodal. Bør jeg implicit kalde TdlgOpretdisk.Create(Owner) i TdlgOpretdisk.OpretDisk?
Avatar billede martinlind Nybegynder
18. marts 2002 - 19:52 #6
Det ville jeg gøre.
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel