![]() |
Ich steig da nich durch.. Procedure deklarieren
Mensch das müsste eigentlich laufen aber dauernd kommen Fehler warnungen... boah :wall:
Delphi-Quellcode:
type
TForm1 = class(TForm) procedure SpielSpeichern1Click(Sender: TObject); procedure dateiOeffnen; procedure dateiSpeichern; procedure dateiErstellen; private { Private declarations } public { Public declarations } end; //------------------Speichern und Oeffnen--------------------------------------- procedure TForm1.SpielSpeichern1Click(Sender: TObject); begin if savedialog1.Execute = true then begin verz := opendialog1.Filename; try dateiOeffnen except showmessage('Datei nicht vohanden') end; end; procedure TForm1.dateiOeffnen; begin AssignFile(datei, verz); reset(datei); read(datei, adr); CloseFile(datei); end; end. Hier bin ich grade dabei meinem Programm eine Speicher und Öffnen Procedure zu schreiben, wie das läuft ist mir auch bewusst. Ich frage mich nur warum er oben in der Deklaration probleme macht... Vielen Dank für eure Beiträge. |
Re: Ich steig da nich durch.. Procedure deklarieren
Fehler? Wie lauten die denn? :glaskugel:
Du deklarierst im Interface zwei Prozeduren, die du im Implementation-Abschnitt nicht implementierst. BTW ... die Code-Formatierungen sehen sehr unschön aus. |
Re: Ich steig da nich durch.. Procedure deklarieren
Ja das ist alles ziemlich abgehackt ich dachte man könnte es erkennen wo da die Fehler liegen.
Fehler Warnungen sind: [Error] StoffersUnit1.pas(236): Statement expected but 'PROCEDURE' found [Error] StoffersUnit1.pas(61): Unsatisfied forward or external declaration: 'TForm1.dateiSpeichern' [Error] StoffersUnit1.pas(62): Unsatisfied forward or external declaration: 'TForm1.dateiErstellen'
Delphi-Quellcode:
Hier mal mein komplette Unitunit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ExtDlgs, StdCtrls, ScktComp, winsock, jpeg, IdBaseComponent, IdComponent, IdIPWatch, AppEvnts; type TForm1 = class(TForm) Image1: TImage; MainMenu1: TMainMenu; Datei1: TMenuItem; NeuesSpiel1: TMenuItem; Hilfe1: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; SpielSpeichern1: TMenuItem; Spieloeffnen1: TMenuItem; N1: TMenuItem; Timer1: TTimer; N2: TMenuItem; Label9: TLabel; Label1: TLabel; Label4: TLabel; Label3: TLabel; Label5: TLabel; Label2: TLabel; Label6: TLabel; Memo1: TMemo; ClientSocket1: TClientSocket; ServerSocket1: TServerSocket; IdIPWatch1: TIdIPWatch; Label7: TLabel; Label8: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; ApplicationEvents1: TApplicationEvents; Label10: TLabel; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; procedure FormCreate(Sender: TObject); procedure NeuesSpiel1Click(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure pause(zeit: longint); procedure Button1Click(Sender: TObject); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure Hilfe1Click(Sender: TObject); procedure SpielSpeichern1Click(Sender: TObject); procedure dateiOeffnen; procedure dateiSpeichern; procedure dateiErstellen; // procedure ServerSocket1ClientRead(Sender: TObject; //Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Nickname, Nachricht, verz:string; // Datei: File of figuren; implementation {$R *.dfm} uses StoffersUnit2, UClientGame, StoffersUnit3, Unit4; procedure TForm1.FormCreate(Sender: TObject); // Procedure für die Form var i: Integer; j: Integer; w: Integer; begin image1.Canvas.Pen.Color:=clBlack; // Stift-Farbe, bei Rectangle der Rahmen image1.Canvas.Brush.Color:=clWhite; // Pinselfarbe, bei Rectangle die Füllung image1.Canvas.Rectangle(0,0,image1.Width,image1.Height);// Rectangle = rechteck um das Brett image1.Canvas.Brush.Color:=clBlack; w:=image1.Width div 8; for i := 0 to 1 do // Für die Senkrechte Linie begin for j := 0 to 3 do // Für die waagerechte Linie / 4 blöcke / 1 block = 2zeilen begin // X1 Y1 X2 Y2 Rectangle(image1.Canvas.Handle, 0+i*w, w+j*2*w-i*w, 1*w+i*w, 2*w+j*2*w-i*w); Rectangle(image1.Canvas.Handle, 2*w+i*w, w+j*2*w-i*w, 3*w+i*w, 2*w+j*2*w-i*w); Rectangle(image1.Canvas.Handle, 4*w+i*w, w+j*2*w-i*w, 5*w+i*w, 2*w+j*2*w-i*w); Rectangle(image1.Canvas.Handle, 6*w+i*w, w+j*2*w-i*w, 7*w+i*w, 2*w+j*2*w-i*w); end; end; Form1.Top:=((Screen.Monitors[0].Height div 2)-(Form1.Height div 2)); Form1.Left:=((Screen.Monitors[0].Width div 2)-(Form1.Width div 2)); Label6.Caption := DateToStr(Date); // Datum Label8.Caption:=IdIPWatch1.LocalIP; //Anzeige der aktuelle IP-Adresse Button1.Enabled:=false; Button2.Enabled:=false; end; procedure TForm1.Image1Click(Sender: TObject); var x,y : integer; begin x:= (Mouse.CursorPos.X-Form1.Left-((Form1.Width-Form1.ClientWidth) div 2)-Form1.Image1.Left) div (Form1.Image1.Width div 8); y:= (Mouse.CursorPos.Y-Form1.Top-(Form1.Height-Form1.ClientHeight -((Form1.Width-Form1.ClientWidth) div 2))-Form1.Image1.Top) div (Form1.Image1.Height div 8); //--- Ausgabe der Koordinaten in den Labels Label1.Caption := IntToStr(X); Label2.Caption := IntToStr(Y); if assigned(OClientGame) then OClientGame.FeldAuswahl(X,Y); end; procedure TForm1.NeuesSpiel1Click(Sender: TObject); begin if assigned(OClientGame) then OClientGame.Free; OClientGame := TClientGame.create; // Variable := Datentyp. wird erstellt end; procedure TForm1.Timer1Timer(Sender: TObject); begin Label5.Caption := TimeToStr(now); // Uhrzeit die aktualisiert wird Label8.Caption:=IdIPWatch1.LocalIP; end; procedure TForm1.N2Click(Sender: TObject); begin Form2:=TForm2.Create(Form1); Form2.ShowModal; Form2.Free; Form2:=nil; end; procedure TForm1.Button3Click(Sender: TObject); begin Nickname:=Edit3.Text; Button3.Enabled:=false; Edit3.Enabled:=false; Button2.Enabled:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin ClientSocket1.Host:=Edit2.Text; ClientSocket1.Active:=true; Button2.Enabled:=false; Edit2.Enabled:=false; Button1.Enabled:=true; Nachricht:=Edit3.Text+' hat den Raum betreten'; pause(500); ClientSocket1.Socket.SendText(Nachricht); end; procedure TForm1.pause(zeit: longint); var zeit1 : longint; begin zeit1 := GetTickCount; repeat Application.ProcessMessages; until (GetTickCount - zeit1 > zeit); end; procedure TForm1.Button1Click(Sender: TObject); begin if (ClientSocket1.Active=true) and (Edit1.Text<>'') then ClientSocket1.Socket.SendText(NickName+': '+Edit1.Text); Edit1.Text:=''; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin ClientSocket1.Socket.SendText(Edit3.Text +' hat den Chat verlassen.'); pause(500); ClientSocket1.Close; end; { procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin var Text:string; i: Integer; begin Text:=Socket.ReceiveText; Memo1.Lines.add(Timetostr(now)+': '+Text); For i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do begin with ServerSocket1.Socket.Connections [I] do if (Connected) then SendText(Text); end; end; } procedure TForm1.Hilfe1Click(Sender: TObject); begin Form4:=TForm4.Create(Form1); Form4.ShowModal; Form4.Free; Form4:=nil; end; //------------------Speichern und Oeffnen--------------------------------------- procedure TForm1.SpielSpeichern1Click(Sender: TObject); begin if savedialog1.Execute = true then begin verz := opendialog1.Filename; try dateiOeffnen except showmessage('Datei nicht vohanden') end; end; procedure TForm1.dateiOeffnen; begin AssignFile(datei, verz); reset(datei); read(datei, adr); CloseFile(datei); end; end. |
Re: Ich steig da nich durch.. Procedure deklarieren
Kleiner Tipp,
schreib die Procedure in dein Implementation-Abschnitt und betätige sobald du folgende Anweisung stehen hast...
Delphi-Quellcode:
die Tastenkombination Großschreiben/Strg/C
Procedure TForm1.MeineProcedure;
begin end; dann wird deine Procedure direkt richtig implementiert und eserscheint kein Fehler mehr. Übrigens, funktioniert die Tastenfunktion auch umgekehrt. Also Procedure anlegen und implementieren lassen Gruß Jens |
Re: Ich steig da nich durch.. Procedure deklarieren
Zitat:
2.) Du hast im Interface die Prozedur dateiSpeichern stehen, aber im Implementation-Abschnitt keine entsprechende Implementierung. 3.) Du hast im Interface die Prozedur dateiErstellen stehen, aber im Implementation-Abschnitt keine entsprechende Implementierung. Weitere Hinweise: - bitte den Code ordentlich formatieren. So ist die Fehlersuche sehr schwer und man verliert leicht den Überblick - bool'sche Variablen nicht auf "= true" prüfen --> if saveDialog1.Execute then - schau die mal try ... finally an (für Datei-Operationen) |
Re: Ich steig da nich durch.. Procedure deklarieren
Genau, wie Reinhardtinho schon gesagt hat.
Verwendest Du oben die von mir beschriebene Tastenfunktion, kann dir das nicht passieren, weil Delphi immer alle Proceduren und Funktion dann automatische ergänzen tut. Gruß Jens |
Re: Ich steig da nich durch.. Procedure deklarieren
Vielen Dank für eure Beiträge, auf einmal funktioniert es. Was das formatieren angeht, daran setze ich mich gleich.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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