Record Übergeben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
din_iso
Beiträge: 10
Registriert: Sa 11. Mai 2013, 14:09

Record Übergeben

Beitrag von din_iso »

Ich versuche Krampfhaft einen Record von einer Prozedur an das Hauptprogramm zu beamen, Pascalstellt sich da quer. ich weiß mit meinem latein absolut nicht mehr weiter, ich schätze es ist das Definieren des Records.

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Unit2;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
	 x: x;
  public
    { public declarations }
 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
Var   t: x;
begin
 
  a1(t);
 
end;
 
 
end.
 


Code: Alles auswählen

unit Unit2;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils;
 
type  StrArray  = array of String;
      IntArray  = array of Integer;
      x   = record
                  a: StrArray;
                  b: StrArray;
                  c: StrArray;
                  d: StrArray;
                  end;
 
procedure a1(var t: x);
 
implementation
 
procedure a1(var t: x);
begin
 
     SetLength(t.a , 2);
     SetLength(t.b , 2);
     SetLength(t.c , 2);
     SetLength(t.d , 2);
 
     t.a[0]  :='s';
     t.b[0] := 's';
     t.c[0]       := 's';
     t.d[0]       := 's';
 
 
end;
 
end.
 

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Record Übergeben

Beitrag von Michl »

In deinem Record hast du 4 dynamische Arrays! Du wirst nicht umhin kommen, den jeweiligen Inhalt der einzelnen Array zu kopieren, wenn Du aus der Procedure eine Function vom Typ x gemacht hast

z.B.

Code: Alles auswählen

 
t.a:=copy(a1.a)
t.b:=copy(a1.b)
....
Lies Dir mal bei der Seite den Abschnitt Dynamische Arrays -> Array kopieren durch: http://www.delphi-treff.de/tutorials/ob ... rs/arrays/

Evtl. kannst du ja dein Record anders/sinnvoller gestalten, wenn du evtl. etwas mehr von deinem Ziel bekanntgibst.

mfg

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Record Übergeben

Beitrag von Bauer321 »

welcher Fehler wird denn überhaupt angezeigt?
www.mcpatcher.net | www.hoeper.me

din_iso
Beiträge: 10
Registriert: Sa 11. Mai 2013, 14:09

Re: Record Übergeben

Beitrag von din_iso »

Hat sich erledigt, der obige Codeschnipsel ist Ok, kann gerne von anderen Anfängern zum üben genutzt werden. ^^

Antworten