Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Schule Adressbuch (https://www.delphipraxis.net/164960-schule-adressbuch.html)

TiGü 8. Dez 2011 06:20

AW: Schule Adressbuch
 
Zitat:

Zitat von DAVKO (Beitrag 1140138)
Nun hat Sie ein abgabetermin fuer Morgen 12 Uhr bekommen.

Zitat:

Zitat von DAVKO (Beitrag 1140146)
der termin ist seid mo bekannt, sie hat auch angweangen aber bis auf:
Code:
...schlimmes Geschrubbel...
steht da nix. waehre auch bereit was zu zahlen. wichtig ist nur, das sie nicht wieder eine 6 da tehen hat...

Ganz ehrlich?

Ich denke - und mit der Meinung stehe ich gewiss nicht alleine da - das diese Aufgabe nicht erst seit dem 5.12 anstand.

Wahrscheinlich hatte sie zwei bis sechs Wochen dafür Zeit, oder?

Wenn ihr erst fünf Minuten vor der Angst anfangt und nicht mehr hinkriegt als die sichtbaren Komponenten auf das Formular zu ziehen, dann ist das ein eindeutiges Zeichen, dass ihr eure Prioritäten und eurer Zeitmanagement besser in den Griff kriegen solltet.

Wenn wirklich eine sechs daraus wird, dann ist es zumindest eine wertvolle Lektion.
Das nächste Projekt - egal in welchen Fach oder späteren Beruf/Studium - wird vielleicht dann nicht so verschlampt.

Tut mir leid, wenn das ein bisschen hart klingt, aber wir haben hier andauerend Anfragen von Schülern, denen alles andere wichtiger im Leben ist und einen Tag vorher (nach mehreren Wochen Zeit) einfällt, dass sie ja noch ein kleine Programm zu programmieren haben.

DAVKO 8. Dez 2011 18:36

AW: Schule Adressbuch
 
Also erstmal entschuldige. Die Angst macht ein oft verzweifelt. haben nun Zeit bis heute Abend und habe ein tutorial durchgearbeitet. das ergebnis hat noch ehler und damit wuerde ich mich gern an euch wenden, wenn das okay ist. hier erstmal der code, den ich wenn er läuft noch etwas umschreiben wollte.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

type Adresse = record
       name: string[50];
       strasse: string[100];
       plz: integer;
       ort: string[50];
     end;

var datei: file of Adresse;

 procedure TForm1.FormCreate(Sender: TObject);
var path: String;
begin
  path := ExtractFilePath(ParamStr(0));
  AssignFile(datei, path+'adressen.dat');
  if FileExists(path+'adressen.dat') then ReSet(datei)
  else ReWrite(datei);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  CloseFile(datei);
end;

procedure TForm1.positionieren(datensatz: integer);
var aktdatensatz: Adresse;
begin
  if (datensatz<0) or (datensatz>=FileSize(datei)) then exit
  else begin
    seek(datei, datensatz);
    read(datei, aktdatensatz);
    edit1.text:=aktdatensatz.name;
    edit2.text:=aktdatensatz.strasse;
    edit3.text:=IntToStr(aktdatensatz.plz);
    edit4.text:=aktdatensatz.ort;
  end;
end;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  positionieren(0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
positionieren(FilePos(datei)-2);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  positionieren(FilePos(datei));
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 positionieren(FileSize(datei)-1);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
const
  BufferSize = 32;

procedure TForm1.Button5Click(Sender: TObject);
var
  Buffer: array[0..BufferSize - 1] of Adresse;
  i, p: integer;
begin
  Seek(datei,0);
  p:=0;
  while not eof(datei) do begin
    Read(datei, Buffer[p]);
    inc(p); //entspr. p:=p+1
  end;
  CloseFile(datei);
  Buffer[p+1].name:='';
  Buffer[p+1].strasse:='';
  Buffer[p+1].plz:=0;
  Buffer[p+1].ort:='';
  ReWrite(datei);
  for i:=0 to p do write(datei, Buffer[i]);
  positionieren(FileSize(datei)-1);
end;

procedure TForm1.Button7Click(Sender: TObject);
var datensatz: Adresse;
    nr: integer;
begin
  Seek(Datei,FilePos(Datei)-1);
  nr:=FilePos(datei);
  datensatz.name:=Edit1.Text;
  datensatz.strasse:=Edit2.Text;

  datensatz.plz:=StrToIntDef(Edit3.Text, -1);

  datensatz.ort:=Edit4.Text;
  write(datei,datensatz);
  positionieren(nr);
end;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
const
  BufferSize = 32;

procedure TForm1.Button6Click(Sender: TObject);
var
  Buffer: array[0..BufferSize - 1] of Adresse;
  i, p: Integer;
  StartRecord, EndRecord: Integer;
  Max: Integer;
begin
  Seek(Datei, FilePos(Datei)-1);
  StartRecord := FilePos(Datei) + 1;
  EndRecord := FileSize(Datei);

  while StartRecord < EndRecord do begin

    Max := BufferSize;
    if Max > EndRecord - StartRecord then
      Max := EndRecord - StartRecord;
    Seek(Datei, StartRecord);
    for i := 0 to Max - 1 do
      Read(Datei, Buffer[i]);

    Seek(Datei, StartRecord - 1);
    for i := 0 to Max - 1 do
      Write(Datei, Buffer[i]);
    inc(StartRecord);
  end;

  Truncate(Datei);
  Positionieren(StartRecord-1);
end;
end;

end.
1. Fehler: Erwartet;, aber. erhalten in Zeile 49 (49:18)
2. Fehler: Bezeichner neu deklariert ´TForm1´ im Zeile 49 (49:12)
3. Fehler: Erwartet: IMPLEMENTATION, aber BEGIN erhalten in Zeile 51 (51:1)
4. Fehler: Erwartet: ., aber ; erhalten in Zeile 56 (56:4)
5. Fehler: Erwartet: das Ende der Datei, aber Bezeichner ´FormDestroy´ erhalten in Zeile 58 (58:18)

ich wuerde mich freuen, wenn ihr mir bei den Fehler helfen könntet.

Lieben Dank

PS: Muss mich noch mal an alle entschuldigen, ihr habt mit euren Aussagen recht und das tut mir leid, das ich dies gestern in der verzweiflung nicht gesehen habe.

Luckie 8. Dez 2011 18:45

AW: Schule Adressbuch
 
Seit wann kommt ausführbarer Code vor den Implementation-Abschnitt?

wicht 8. Dez 2011 18:47

AW: Schule Adressbuch
 
Ich habe es jetzt nicht getestet oder sonstwas, aber sehr auffällig ist, dass du Code (z.B. Prozeduren) überhalb des "implementation"-Schlüsselwortes benutzt. Pack mal folgendes

Delphi-Quellcode:
 procedure TForm1.FormCreate(Sender: TObject);
var path: String;
begin
  path := ExtractFilePath(ParamStr(0));
  AssignFile(datei, path+'adressen.dat');
  if FileExists(path+'adressen.dat') then ReSet(datei)
  else ReWrite(datei);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  CloseFile(datei);
end;

procedure TForm1.positionieren(datensatz: integer);
var aktdatensatz: Adresse;
begin
  if (datensatz<0) or (datensatz>=FileSize(datei)) then exit
  else begin
    seek(datei, datensatz);
    read(datei, aktdatensatz);
    edit1.text:=aktdatensatz.name;
    edit2.text:=aktdatensatz.strasse;
    edit3.text:=IntToStr(aktdatensatz.plz);
    edit4.text:=aktdatensatz.ort;
  end;
end;
unter

Code:
implementation

Das könnte schon helfen. Weil hier scheinbar Eigeninitiative ergriffen wurde, ist das schon einmal ein Fortschritt :P ... "implementation" ist das, was ansagt, dass jetzt Code folgt. Und genau das sind die Teile, die du unter das "implementation" verschieben solltest.

Edit: Der Luckie war zu schnell... trotzdem poste ich!

DAVKO 8. Dez 2011 19:06

AW: Schule Adressbuch
 
Habe das nun gemacht und nun habe ich sehr viele Fehlermeldungen.
ich habe das ganze mal als rar datei gepackt.

Link: Download

Luckie 8. Dez 2011 19:09

AW: Schule Adressbuch
 
Sorry, aber der Download erfordert Javascript und das werde ich auf der Seite nicht aktivieren. Warum hängst du es nicht hier an deinem Beitrag an?

DAVKO 8. Dez 2011 19:12

AW: Schule Adressbuch
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier die datei als anhang. danke

wicht 8. Dez 2011 19:25

AW: Schule Adressbuch
 
Du benutzt Prozeduren (z.B. TForm1.FormCreate, TForm1.FormDestroy), die nicht in der Klassendefinition vorhanden sind. Erweitere deinen Kram im interface-Abschnitt.
Oben unter

Delphi-Quellcode:
{ ...}
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
musst du noch

Delphi-Quellcode:
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
schreiben.

Nach "procedure TForm1.Button7Click(Sender: TObject);" hast du am Ende zwei mal "end;" geschrieben - das gehört da aber nur einmal hin - jedes "begin" erfordert ein "end" - da ist eins zu viel.

Dann gibt es noch diese lustige Stelle:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
const
  BufferSize = 32;

procedure TForm1.Button5Click(Sender: TObject);
Das ist so nicht möglich. Mach mal das obere Zeug (alles über dem zweiten "procedure [...]" weg und tu das "const Buffersize = 32;" direkt unter das zweite Procedure, dass es so aussieht:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
const
  BufferSize = 32;
var
  Buffer: array[0..BufferSize - 1] of Adresse;
  i, p: integer;
begin
  Seek(datei,0);
  p:=0;
Weiter habe ich nicht probiert, bin ja nun selber schwer mit Delphi beschäftigt :-D

himitsu 8. Dez 2011 19:28

AW: Schule Adressbuch
 
Es kommt noch ein paar Mal sowas vor:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
const
  BufferSize = 32;

procedure TForm1.Button5Click(Sender: TObject);
...
begin

...

end;
end;
Sieht jemand den Fehler?

Ihr habt doch D2010 ... drückt mal Strg+D im Codeeditor, bzw. im Kontextmenü "Quelltext formatieren".
Ordentlich formatiert fallen die Fehler eventuell noch besser auf.



Nja, Delphi gibt doch die Fehlerstellen ganz gut an?
Da muß man sich halt mal die erste Fehlermeldung vornehmen (Doppelklick auf die Fehlermeldung) und um diese Stelle drumrumgucken, was da los ist und was nicht stimmen könnte.

Quellcode kann man hier im Forum auch direkt anhängen. (die DPR, die PAS, die DFM und eventuell noch die EXE)
Bin heute zu langsam.

haentschman 8. Dez 2011 19:32

AW: Schule Adressbuch
 
Liste der Anhänge anzeigen (Anzahl: 1)
...ich war grad dabei. 8-)
Im Anhang mal eine korrigierte Unit. (incl. der oben beschriebenen Fehler). Ich habe einfach mal sortiert, begin/end eingefügt. Auch wenn es manchmal nicht notwendig wäre erhöht es durchaus die Übersichtlichkeit, da der Block (z.B. Schleife) besser zu sehen ist. Keine Prüfung der Logik ! Falls ich noch was übersehen habe... ist schon spät :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Seite 2 von 5     12 34     Letzte »    

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