Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Compilermeldungen (https://www.delphipraxis.net/164855-compilermeldungen.html)

jnaumann50 2. Dez 2011 13:45

Delphi-Version: 2007

Compilermeldungen
 
Hallo,
ich erhalte bei einem alten Proket (Delphi3) welches ich nach Delphi2009 umsetzen muss seltsame Comiler-Fehler sieh Quelltextausschnitt
Delphi-Quellcode:
  type
    Ptr_CPC_MSG = ^CPC_MSG;

var
  MainForm    : TMAINForm;
  professional : byte;     // Code für Freischaltung/Berechtigung (1-4)
  projektOffen : Boolean;  // true, falls gerade ein Projekt geöffnet ist

    MainIniPath : String;
    MyIni       : TIniFile;
    MyProjectIni : TIniFile;
    zahl        : Integer;
    FileList    : THistoryList;
    IniPfad     : String;
    PPfad       : String;
    SpeicherPfad : String;
    CanHandle   : Integer;
    Time        : Boolean;
    MyMsgPtr    : CPC_CAN_MSG;
    MsgHandlePtr : Ptr_CPC_MSG;
    Adress      : Word;
    AdressHelp  : String;
    Fehler      : Integer;
    KnotenNr    : Integer;
    Format      : String;
    CanAktiv    : Boolean;

     PASSWORT : array [0..4] of string;
     //Passwörter für das Freischalten auf höhere Berechtigungen

  //procedure scaleform ( TForm; w,h : boolean);

//implementation

{$R *.DFM}

uses About, ModDelete, EditModul, ParameterAll, newModul, warte, ProtUnit,
  Folder_Unit, zusammenfassung, Passw, Freischalt, QuellView;
// Fehler Deklaration erwartet, aber Uses gefuden


{--------------------- erzeugen des Formulares -------------------------------}
{-----------------------------------------------------------------------------}

    PROCEDURE MainMenue1(Sender: TObject);  // E2004 Bezeichner redefiniert
    begin
      end;
    end;
{=============================================================================
 CopyFile procedure found in the FMXUTILS.PAS file in Delphi\Demos\Doc\Filmanex
 This is an example of copying a file using a buffer.
 =============================================================================}
procedure CopyFile(const FileName, DestName: TFileName);
var
  CopyBuffer: Pointer; { buffer for copying }
  TimeStamp, BytesCopied: Longint;
  Source, Dest: Integer; { handles }
  Destination: TFileName; { holder for expanded destination name }
const
  ChunkSize: Longint = 8192; { copy in 8K chunks }
begin
  Destination := ExpandFileName(DestName); { expand the destination path }
  if HasAttr(Destination, faDirectory) then { if destination is a directory... }
    Destination := Destination + '\' + ExtractFileName(FileName); { ...clone file name }
  TimeStamp := FileAge(FileName); { get source's time stamp }
  GetMem(CopyBuffer, ChunkSize); { allocate the buffer }
  try
    Source := FileOpen(FileName, fmShareDenyWrite); { open source file }
    if Source < 0 then raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));
    try                                           // undeklarierter Bezeichner SFOpenError
      Dest := FileCreate(Destination); { create output file; overwrite existing }
      if Dest < 0 then raise EFCreateError.Create(FmtLoadStr(SFCreateError, [Destination]));
      try                                        // undeklarierter Bezeichner SFCreateError
        repeat
          BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
          if BytesCopied > 0 then { if we read anything... }
            FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
        until BytesCopied < ChunkSize; { until we run out of chunks }
      finally
        FileClose(Dest); { close the destination file }
      end;
    finally
      FileClose(Source); { close the source file }
    end;
  finally
    FreeMem(CopyBuffer, ChunkSize); { free the buffer }
  end;
end;

PROCEDURE TMainForm.FormCreate(Sender: TObject);   // E2009 ; erwartet aber . gefunden
var pw    : file;
    i, z  : integer;
    laenge : byte;
BEGIN
     (* Variable mit Pfad der Anwendung initialisieren *)
     MainIniPath  := ExtractFilePath(ParamStr(0));
     (* Variable mit der AnwendungsDatei initialisieren *)
     IniPfad      := MainForm.MainIniPath + 'MDI-Haupt.ini';
     (* Instanz einer IniDatei erzeugen *)
     MyIni        := TIniFile.Create (IniPfad);
     (* Hilfshinweise aktivieren *)
     Application.OnHint       := ShowHint;
     (* Instanz einer HistList erzeugen *)
     FileList := THistoryList.Create ;
     (* HistList aus IniDatei lesen *)
     FileList.LoadFromIni (IniPfad,'Files'); // Operator oder Semikolon fehlt
     (* HistList an Menü anhängen *)
     FileList.MenuItem := Datei;             // Operator oder Semikolon fehlt

CarlAshnikov 2. Dez 2011 13:55

AW: Compilermeldungen
 
Also ich würde dir zunächst raten, den Code in Delphi Tags zu packen, damit hier jemand was erkennen kann.

Außerdem denke ich, dass
Zitat:

//implementation
lieber nicht auskommentiert werden sollte.

jnaumann50 2. Dez 2011 14:25

AW: Compilermeldungen
 
Hier der Quelltextauszug klarer;

procedure CopyFile(const FileName, DestName: TFileName);
var
CopyBuffer: Pointer; { buffer for copying }
TimeStamp, BytesCopied: Longint;
Source, Dest: Integer; { handles }
Destination: TFileName; { holder for expanded destination name }
const
ChunkSize: Longint = 8192; { copy in 8K chunks }
begin
Destination := ExpandFileName(DestName); { expand the destination path }
if HasAttr(Destination, faDirectory) then { if destination is a directory... }
Destination := Destination + '\' + ExtractFileName(FileName); { ...clone file name }
TimeStamp := FileAge(FileName); { get source's time stamp }
GetMem(CopyBuffer, ChunkSize); { allocate the buffer }
try
Source := FileOpen(FileName, fmShareDenyWrite); { open source file }
if Source < 0 then raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));
try Undelarierter Bezeichner>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >^^^^


Dest := FileCreate(Destination); { create output file; overwrite existing }
if Dest < 0 then raise EFCreateError.Create(FmtLoadStr(SFCreateError, [Destination]));
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> // undeklarierter Bezeichner SFCreateError
try
repeat
BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
if BytesCopied > 0 then { if we read anything... }
FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
until BytesCopied < ChunkSize; { until we run out of chunks }
finally
FileClose(Dest); { close the destination file }
end;
finally
FileClose(Source); { close the source file }
end;
finally
FreeMem(CopyBuffer, ChunkSize); { free the buffer }
end;
end;

PROCEDURE TMainForm.FormCreate(Sender: TObject);

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> E2009 ; erwartet aber . gefunden

var pw : file;
i, z : integer;
laenge : byte;
BEGIN
(* Variable mit Pfad der Anwendung initialisieren *)
MainIniPath := ExtractFilePath(ParamStr(0));
(* Variable mit der AnwendungsDatei initialisieren *)
IniPfad := MainForm.MainIniPath + 'MDI-Haupt.ini';
(* Instanz einer IniDatei erzeugen *)
MyIni := TIniFile.Create (IniPfad);
(* Hilfshinweise aktivieren *)
Application.OnHint := ShowHint;
(* Instanz einer HistList erzeugen *)
FileList := THistoryList.Create ;
(* HistList aus IniDatei lesen *)
FileList.LoadFromIni (IniPfad,'Files');

// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>Operator oder Semikolon fehlt

(* HistList an Menü anhängen *)
FileList.MenuItem := Datei;

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Operator oder Semikolon fehlt

(* CAN geschlossen *)
CanAktiv := FALSE;

(*** geändert 21.06.05 Stefan Wild ***)
(* Projektpfad vorgeben *)
MainIniPath := MainIniPath + 'Projekte\';
{ Standardpfad für Projektdaten wird nicht mehr mit gespeichert,
sondern ist immer der Unterordner Projekte

(* aus AnwendungsDatei letzten Projektpfad auslesen *)
hilf := MyIni.ReadString ('Projektdaten','pfad','Error');
(* wenn kein Projektpfad vorhanden ist ... *)
IF (hilf = '') or (hilf = 'Error') THEN
BEGIN
(* Projektpfad vorgeben *)
MainIniPath := MainIniPath + 'Projekte\';
MyIni.WriteString('Projektdaten','pfad',MainIniPat h);
END
ELSE
BEGIN
(* wenn Pfad vorhanden ... *)
(* Variable mit ProjektPfad initialisieren *)
MainIniPath := hilf;
END; }

projektOffen := false;

(*** eingefügt 22.6.05 Stefan Wild ***)
(* Speicherung der Passwörter in verschlüsselter Datei *)
professional := 1;

if FileExists(ExtractFilePath(Paramstr(0)) + 'iblCM2005.pwl') then begin
try
AssignFile(pw, ExtractFilePath(Paramstr(0)) + 'iblCM2005.pwl');
Reset(pw, 1);
for z := 2 to 4 do begin
(* verschlüsseltes Passwort lesen *)
BlockRead(pw, laenge, 1);
PASSWORT[z] := ' ';
SetLength(PASSWORT[z], laenge);
for i := 1 to laenge do begin
BlockRead(pw, PASSWORT[z][i], 1);
end;
end;
CloseFile(pw);
except
on Exception do begin
try CloseFile(pw);
except on Exception do
// wenn die Datei nicht offen war, schließen wir sie halt auch nicht
end;
PasswForm.neuepw;
end; // except
end; // try
end // if fileExists
else
PasswForm.neuepw;

(*** eingefügt 7.7.05 Stefan Wild ***)
(* weiter Menüpunkt falls Digitalausgänge getestet werden können *)
if FileExists(ExtractFilePath(ParamStr(0)) + '\DigOutTest\Project1.exe')
then Digitalout.Visible := true;
// else ist es nach Voreinstellung false

END;

Danke für den Hinweis
Jürgen

Bernhard Geyer 2. Dez 2011 15:13

AW: Compilermeldungen
 
Zitat:

Zitat von jnaumann50 (Beitrag 1138967)
Hier der Quelltextauszug klarer;

Solange du deinen Quelltext nicht mit den dafür vorgesehenen Tags formatierst ist er nicht klarer.

jnaumann50 2. Dez 2011 16:42

AW: Compilermeldungen
 
Bitte kannst Du mir mal ein Beispiel geben - Leider habe ich keine Auhneung was Du meinst
Sorry

Jürgen

Sir Rufo 2. Dez 2011 16:51

AW: Compilermeldungen
 
statt:
procedure TotalBloedAussehenderQuellText;
begin
ShowMessage('DasKannDochKeinSchweinLesen');
end;

sollst du
Delphi-Quellcode:
procedure TotalSchoenAussehenderQuellText;
begin
  ShowMessage('Geht doch');
end;
Weil man sonst davon Augenkrebs bekommt.

Und so einfach ist das gemacht:
Code:
[DELPHI]
procedure TotalSchoenAussehenderQuellText;
begin
  ShowMessage('Geht doch');
end;
[/DELPHI]

jnaumann50 2. Dez 2011 17:01

AW: Compilermeldungen
 
Danke Sir Rufo

Hie die lesbarere Version

Delphi-Quellcode:
procedure CopyFile(const FileName, DestName: TFileName);
var
  CopyBuffer: Pointer; { buffer for copying }
  TimeStamp, BytesCopied: Longint;
  Source, Dest: Integer; { handles }
  Destination: TFileName; { holder for expanded destination name }
const
  ChunkSize: Longint = 8192; { copy in 8K chunks }
begin
  Destination := ExpandFileName(DestName); { expand the destination path }
  if HasAttr(Destination, faDirectory) then { if destination is a directory... }
    Destination := Destination + '\' + ExtractFileName(FileName); { ...clone file name }
  TimeStamp := FileAge(FileName); { get source's time stamp }
  GetMem(CopyBuffer, ChunkSize); { allocate the buffer }
  try
    Source := FileOpen(FileName, fmShareDenyWrite); { open source file }
    if Source < 0 then raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));

    try                                      // COMPILERFEHLERMELDUNG undeklarierter Bezeichner SFOpenError

      Dest := FileCreate(Destination); { create output file; overwrite existing }
      if Dest < 0 then raise EFCreateError.Create(FmtLoadStr(SFCreateError, [Destination]));
      try                                    // COMPILERFEHLERMELDUNG undeklarierter Bezeichner SFCreateError
        repeat
          BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
          if BytesCopied > 0 then { if we read anything... }
            FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
        until BytesCopied < ChunkSize; { until we run out of chunks }
      finally
        FileClose(Dest); { close the destination file }
      end;
    finally
      FileClose(Source); { close the source file }
    end;
  finally
    FreeMem(CopyBuffer, ChunkSize); { free the buffer }
  end;
end;

PROCEDURE TMainForm.FormCreate(Sender: TObject);   //  COMPILERFEHLERMELDUNG E2009 ; erwartet aber . gefunden

var pw    : file;
    i, z  : integer;
    laenge : byte;
BEGIN
     (* Variable mit Pfad der Anwendung initialisieren *)
     MainIniPath  := ExtractFilePath(ParamStr(0));
     (* Variable mit der AnwendungsDatei initialisieren *)
     IniPfad      := MainForm.MainIniPath + 'MDI-Haupt.ini';
     (* Instanz einer IniDatei erzeugen *)
     MyIni        := TIniFile.Create (IniPfad);
     (* Hilfshinweise aktivieren *)
     Application.OnHint       := ShowHint;
     (* Instanz einer HistList erzeugen *)
     FileList := THistoryList.Create ;
     (* HistList aus IniDatei lesen *)

     FileList.LoadFromIni (IniPfad,'Files'); //  COMPILERFEHLERMELDUNG Operator oder Semikolon fehlt

     (* HistList an Menü anhängen *)

     FileList.MenuItem := Datei;             //  COMPILERFEHLERMELDUNG Operator oder Semikolon fehlt

     (* CAN geschlossen *)
     CanAktiv := FALSE;

... some code

END;

Sir Rufo 2. Dez 2011 17:03

AW: Compilermeldungen
 
Ich gebs auf ... :roll:

Bummi 2. Dez 2011 17:04

AW: Compilermeldungen
 
sieht aus als ob Ihr Auszüge aus der alten FmxUtils.pas noch verwendet, sonst müsste er bei HasAttr schon meckern.
Wenn Du Glück hast fehlt Dir nur RTLConsts in den Uses

Stevie 2. Dez 2011 17:05

AW: Compilermeldungen
 
Is scho schwer, Text zu markieren und auf den Helm zu klicken... :twisted:

Sir Rufo 2. Dez 2011 17:07

AW: Compilermeldungen
 
Zitat:

Zitat von Stevie (Beitrag 1139014)
Is scho schwer, Text zu markieren und auf den Helm zu klicken... :twisted:

Den Knopf muss ja nun nicht unbedingt finden, aber wenn man den eigenen Beitrag nach dem Abschicken sich nochmals anschaut, dann sollte einem doch auffallen, dass der doch noch nicht so aussieht wie erwartet ... und dass sollte man schon verlangen können.

Reflektieren und der eigenen Arbeit kritisch gegenüberstehen ...

blauweiss 2. Dez 2011 17:18

AW: Compilermeldungen
 
Hallo jnaumann50,

wenn ich es richtig überblicke, dürfte Dein Hauptproblem sein, daß (aus nicht ersichtlichem Grund) diese Zeile in Deinem Code auskommentiert ist:

Delphi-Quellcode:
//implementation
Gruss,
blauweiss

jnaumann50 2. Dez 2011 17:35

AW: Compilermeldungen
 
3000-mal sorry für mein Unverständnis
Ich hoffe Du hilfst mir freundlicherweise weiter

Delphi-Quellcode:
procedure CopyFile(const FileName, DestName: TFileName);
var
  CopyBuffer: Pointer; { buffer for copying }
  TimeStamp, BytesCopied: Longint;
  Source, Dest: Integer; { handles }
  Destination: TFileName; { holder for expanded destination name }
const
  ChunkSize: Longint = 8192; { copy in 8K chunks }
begin
  Destination := ExpandFileName(DestName); { expand the destination path }
  if HasAttr(Destination, faDirectory) then { if destination is a directory... }
    Destination := Destination + '\' + ExtractFileName(FileName); { ...clone file name }
  TimeStamp := FileAge(FileName); { get source's time stamp }
  GetMem(CopyBuffer, ChunkSize); { allocate the buffer }
  try
    Source := FileOpen(FileName, fmShareDenyWrite); { open source file }
    if Source < 0 then raise EFOpenError.Create(FmtLoadStr(SFOpenError, [FileName]));
    try                                          

[COLOR="Red"] // Compilerfehlermeldung: undeklarierter Bezeichner SFOpenError [/COLOR]

      Dest := FileCreate(Destination); { create output file; overwrite existing }
      if Dest < 0 then
      raise    
        EFCreateError.Create(FmtLoadStr(SFCreateError[Destination]));
      try                                        

[COLOR="Red"] // Compilerfehlermeldun: [/COLOR]

        repeat
          BytesCopied := FileRead(Source, CopyBuffer^, ChunkSize); { read chunk }
          if BytesCopied > 0 then { if we read anything... }
            FileWrite(Dest, CopyBuffer^, BytesCopied); { ...write chunk }
        until BytesCopied < ChunkSize; { until we run out of chunks }
      finally
        FileClose(Dest); { close the destination file }
      end;
    finally
      FileClose(Source); { close the source file }
    end;
  finally
    FreeMem(CopyBuffer, ChunkSize); { free the buffer }
  end;
end;

PROCEDURE TMainForm.FormCreate(Sender: TObject);  

[COLOR="Red"] // E2009 ; erwartet aber . gefunden [/COLOR]

var pw    : file;
    i, z  : integer;
    laenge : byte;
BEGIN
     (* Variable mit Pfad der Anwendung initialisieren *)
     MainIniPath  := ExtractFilePath(ParamStr(0));
     (* Variable mit der AnwendungsDatei initialisieren *)
     IniPfad      := MainForm.MainIniPath + 'MDI-Haupt.ini';
     (* Instanz einer IniDatei erzeugen *)
     MyIni        := TIniFile.Create (IniPfad);
     (* Hilfshinweise aktivieren *)
     Application.OnHint       := ShowHint;
     (* Instanz einer HistList erzeugen *)
     FileList := THistoryList.Create ;
     (* HistList aus IniDatei lesen *)// Operator ode
     FileList.LoadFromIni (IniPfad,'Files');

[COLOR="Red"]// Operator oder Semikolon fehlt [/COLOR]

     (* HistList an Menü anhängen *)
     FileList.MenuItem := Datei;            

[COLOR="Red"]// Operator oder Semikolon fehlt[/COLOR]

     (* CAN geschlossen *)
     CanAktiv := FALSE;

 
END;
Vielen Dank im Voraus
Jürgen

Stevie 2. Dez 2011 17:40

AW: Compilermeldungen
 
Bei dem "unbekannter Bezeichner Fehler" handelt es sich in aller Regel (falsch geschrieben einmal außen vor gelassen) um eine fehlende Unit im uses.
Dazu einfach mal in den Delphi Sourcen nach diesem Bezeichner suchen und die entsprechende Unit einbinden - Tip: nach "<name des bezeichners> =" suchen, sonst findet man sämliche Vorkommen und nicht nur die Definition.

P.S. Farbtags innerhalb des Delphi Tags funktionieren leider nicht :(

Sir Rufo 2. Dez 2011 17:48

AW: Compilermeldungen
 
Ok, wenn wir darüber mal hinwegsehen ...

Im ersten Beitrag (ein dienstbarer Geist hat den ja schon leserlich gestaltet) finde ich sowas
Delphi-Quellcode:
...

  //procedure scaleform ( TForm; w,h : boolean);

//implementation

{$R *.DFM}

uses About, ModDelete, EditModul, ParameterAll, newModul, warte, ProtUnit,
  Folder_Unit, zusammenfassung, Passw, Freischalt, QuellView;
// Fehler Deklaration erwartet, aber Uses gefuden

    PROCEDURE MainMenue1(Sender: TObject); // E2004 Bezeichner redefiniert
    begin
      end;
    end;

PROCEDURE TMainForm.FormCreate(Sender: TObject); // E2009 ; erwartet aber . gefunden
Wenn man
Delphi-Quellcode:
implementation
auskommentiert, dann wundern mich die meisten Fehlermeldungen hier nicht.
(auch dieses wurde hier schon mehrfach gesagt)

***EDIT: Man kann den eigenen Beitrag innerhalb von 24h auch editieren, dafür gibt es unter dem eigenen Beitrag ein Button mit "Bearbeiten" ;)

Luckie 2. Dez 2011 18:05

AW: Compilermeldungen
 
ICH BIN KEIN GEIST! :mrgreen:

Sir Rufo 2. Dez 2011 18:08

AW: Compilermeldungen
 
Zitat:

Zitat von Luckie (Beitrag 1139023)
ICH BIN KEIN GEIST! :mrgreen:

Irgendwie steht da
Zitat:

Geändert von SirThornberry (Heute um 15:02 Uhr)
:gruebel:

jaenicke 2. Dez 2011 18:23

AW: Compilermeldungen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1139025)
Irgendwie steht da

Entweder er hat danach noch einmal editiert oder wir sollten über die Geistvariante doch noch einmal nachdenken. :mrgreen:

Zum Problem:
Einmal SFOpenError bei Google eingeben, (bei mir) zweites Ergebnis anklicken, fertig... :roll:
http://www.delphifaq.com/faq/delphi/...ide/f159.shtml
Es fehlt einfach die Unit RTLConsts in der uses, weil die Konstanten in Delphi 6 oder 7 dorthin verschoben wurden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz