Pascal -> Delphikonvertierung

madmat

Mitglied
Hallo zusammen, folgendes Problem:

Ich habe vor laaanger Zeit ein Pascal Programm geschrieben, komplett prozedural, sieht ungefähr so aus:

Code:
uses
type
var
procedure Nummer;
.

procedure Terminal;
.
Nummer;

procedure Compile;
.
Terminal;
end;

begin
WriteLn('Was eingeben --> ');
ReadLn(a);
Compile;
ReadLn;
end.

Da ich jetzt möchte, dass das ganze Programm unter Delphi auf Buttonclick gestartet wird, habe ich die type/var deklarationen in den delphi-kopf übernommen und das programm in
Code:
procedure TForm1.Button1Click(Sender: TObject);
eingesetzt.
davor wollte ich writeln/readln durch memo/editfeld ersetzen, also lesen vom edit feld, schreiben ins memofeld.
wenn ich allerdings das memofeld ansprechen möchte, also in der buttonprozedur "memo1." eingebe kommt statt des kontextfensters die meldung dass der quelltext fehler enthalte, obwohl das programm OHNE den memoeintrag kompiliert wird.
wo kann mein denkfehler sein ?
 
Wie sollen wir einen Fehler finden, wenn wir nicht mal wissen, wo der Fehler passiert? Und wie der Code überhaupt aussieht
 
Dein altes Pascal-Programm hat vermutlich keinen Zugriff auf das Fenster geschweige denn auf Komponenten dieses Fensters wie z.B. ein Memofeld.

Etwas mehr Quellcode würde hier sicher mehr Klarheit schaffen.

vop
 
ich habe ein neues delphi projekt angelegt, auf dem form ein memo, editfeld und einen button angelegt, dann das gesamte pascalprogramm in die buttonprozedur kopiert, die prozedurenköpfe aus den pascalprozeduren im head der delphidatei (da wo auch der kopf der buttonprozedur steht) eingetragen, ebenso die type & var deklarationen des pascalcodes in die entsprechenden delphi type & var übernommen.

sobald ich zu hause bin gibt´s quelltext - danke schonmal...

;)
 
Zuletzt bearbeitet:
quelltext

Code:
unit test;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
const
EOFChar = #26;
type
    TSymbol = (...diverse symbole...);
    TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;

    procedure Button1Click(Sender: TObject);
    procedure Emit(txt:string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
  var
     Form1: TForm1;

implementation
{$R *.dfm}
procedure Emit(txt:string);
begin
memo1.LINES.ADD(txt); // <-- hier tritt der fehler auf, sobald ich hinter "memo1"den . setze, meldung:[Pascal Fehler] test.pas(1): Die Programmierhilfe kann nicht aufgerufen werden, da der Quelltext Fehler enthält
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=edit1.Text;
emit(s);
end;
end.

es sind 48 prozeduren, das hier nur als auszug, auch dieses isolierte beispiel läuft so nicht...hab ich die kopfdeklarationen irgendwie falsch gemacht ?
 
Zuletzt bearbeitet:
Wahrscheinlich kriegst du den Fehler "unbekannter Bezeichner" oder so. Das liegt daran, dass die Prozedur entweder zu TForm1 gehören muss (Schema: Procedure TForm1.prozedurname; ) oder in der Prozedur alle Komponenten von Form1 auch als diese geschrieben werden müssen (also zB form1.memo1.lines.add). Ansonsten findet es keine Zugehörigkeit, sodass es nicht genau weiß, welches Memo1 ist, weil du ja auch auf Form2 zB ein Memo1 haben könntest.

Das ist der Fehler, den ich auf Anhieb sehe, muss nicht der einzige sein. Fibnde aber erstmal keinen weiter. Und vielleicht kann das noch jemand verständlicher ausdrücken, ist ein ziemliches Gewirr glaub ich, was ich da geschrieben hab. Bin halt durch den Wind etwas.

Hellie
 
*kissyafeet*
danke-das war´s.
da nur ein form vorhanden war, dachte ich man bräuchte es nicht direkt ansprechen - irrtum.

:-(
 
Zurück