Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   undeclared identifier (https://www.delphipraxis.net/74053-undeclared-identifier.html)

Yann 27. Jul 2006 12:51


undeclared identifier
 
Hallo! :-D

Ich bin neu hier und sitze erst seit zwei Tagen wieder an Delphi. Ich hab Pascal und ein wenig Delphi in der Schule gelernt und habe eine bestimmt ganz einfache Frage.

Ich versuche Daten einer csv-Datei zu verarbeiten und habe schon im Forum die passenden Posts gefunden. Ich beziehe mich hier auf:
http://www.delphipraxis.net/internal...t.php?p=480681

Wenn ich das erste Beispiel übernehme bekomm ich beim Versuch das Programm zu starten "undeclared identifier: 'Append'" zu hören. Genausowie bei 'Fields' und 'Post'.
(Als <deinetabelle> habe ich eine Listbox gewählt.)

Wie muss ich diese denn deklarieren? Das sind ja keine Variablen sondern "Arbeitsanweisungen" (ich versuch gar nicht erst den richtigen Ausdruck im Fachjargon zu finden :wink: ).

Schönen Gruß
Yann

3_of_8 27. Jul 2006 12:54

Re: undeclared identifier
 
Die Dinger heißen Prozeduren, Funktionen oder einfach Routinen.

Wenn die undeclared sind, musst du einfach die entsprechende Unit einbinden, das wäre hier wohl SysUtils.

himitsu 27. Jul 2006 12:56

Re: undeclared identifier
 
Dieses <deinetabelle> ist irgendso'ne Datenbankkomponente ... eine "normale" TListBox kennt sowas nicht.

Hab zwar keine Ahnung davon, aber für mich sieht es so aus, als wenn diese Befehle irgendwie die DBsteuern ._.

[add]
@3of8:
das Append ist hier nicht die Procedure zum öffnen einer Datei :zwinker:

Klaus01 27. Jul 2006 12:57

Re: undeclared identifier
 
kannst Du mal bitte Deine angepasste Methode hier hinein stellen.
Vielleicht ist es dann einfacher auf Deine Probleme einzugehen.

Grüße
Klaus

Yann 27. Jul 2006 13:07

Re: undeclared identifier
 
Ok, hier ist die gesamte Unit.
Das ganze eingeklammerte sind die letzten Fehlschläge, aber ich glaube mit der Methode bin ich meinem Ziel am nächsten also erstmal nicht beachten! :wink:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, ComCtrls, ShellCtrls, Buttons;

type
  TDatei = class(TForm)
    Dateiliste: TFileListBox;
    Dateityp: TFilterComboBox;
    OK: TButton;
    Ordner: TDirectoryListBox;
    Esc: TButton;
    DriveComboBox1: TDriveComboBox;
    ListBox1: TListBox;
    Laden: TButton;
    OpenDialog: TOpenDialog;
    procedure EscClick(Sender: TObject);
    procedure OKClick(Sender: TObject);
    procedure LadenClick(Sender: TObject);


  private
     s : tstringlist;


  public
    Parameter: TStringlist;

  end;

var
  Datei: TDatei;


implementation

uses GraphProg;

{$R *.dfm}

procedure TDatei.EscClick(Sender: TObject);
begin
close;
end;




{
procedure TDatei.SetNames(names: string);
var
  j: integer;
begin
  FNames.DelimitedText := parameter[Item.Index];
  for j := 0 to Pred(FNames.Count) do
  begin
  graph.Canvas.Pixels[100, Strtoint(Fnames[j])] := clRed;
  end;
end;        }



procedure TDatei.OKClick(Sender: TObject);
var
   slTemp: TStringlist;
   i: Integer;

begin

listbox1.clear;
slTemp := TStringlist.Create;
   try
      slTemp.LoadFromFile(Dateiliste.Filename);
       for i := 0 to slTemp.Count - 1 do begin
       ListBox1.Items.Add(slTemp.Strings[i]);
       end;
   finally
      FreeAndNil(slTemp);
   end;
end;

{
procedure TDatei.LadenClick(Sender: TObject);
var
 i : integer;
 s : tstringlist;
 t : string;
begin
s:= tstringlist.Create;
{t:= tstringlist.Create;}
{   try
   s.LoadFromFile(Dateiliste.Filename);
        for i := 0 to s.Count -1 do
        begin
          t := s.Strings[i];
           graph.Canvas.Pixels[10, strtoint(t)] :=clred ;
        end;
    finally
    freeandnil(s);
    end;
end;   }

procedure tdatei.ladenClick(Sender: TObject);
  var    
    SL: TStringList;    
    i: Integer;    
    T: Textfile;    
    SInString: String;    

   
begin    
  if (opendialog.Execute) then begin
    SL := TStringList.Create;
    try
      AssignFile(T,opendialog.FileName);
      Reset(T);    
      while (not Eof(T)) do begin  
        ReadLn(T,SInString);
        SL.Delimiter := ';';
        SL.DelimitedText := SInString;
        listbox1.Append;
        for i := 0 to SL.Count-1 do
        listbox1.Fields[I].AsString := SL.Strings[i];
        listbox1.Post;

      end;
    finally
      SL.Free;
    end;
  end;
  CloseFile(T);
end;

{
procedure TDatei.LadenClick(Sender: TObject);
var
   Para: TStringlist;
   j: Integer;
   Wert: integer;

begin
parameter := TStringlist.Create;

    parameter.LoadFromFile(Dateiliste.Filename);

   FNames.DelimitedText := parameter[0];
   for j := 0 to Pred(FNames.Count) do
   begin
   graph.Canvas.Pixels[100, Strtoint(Fnames[j])] := clRed;
   end;

    parameter.Delete(0);


end;



procedure TDatei.LadenClick(Sender: TObject);

var
wert: integer;
i : integer;
begin       }

 { para := dateiliste.Items[0];
  wert := Strtoint(para); }
 { close;
   try
   parameter := tstringlist.create;
    parameter.LoadFromFile(Dateiliste.Filename);
    setnames(parameter[0]);
        begin
        Bitmap := TBitmap.Create;
        try
        with Bitmap do begin
        LoadFromFile('C:\Dokumente und Einstellungen\Yann\Eigene Dateien\Eigene Bilder\graph\koordinatensystem1.bmp');
        graph.Canvas.Draw(0,0,BitMap);
        end;
        finally
        Bitmap.Free;
        end;
        end;
      for i := 0 to dateiliste.InstanceSize - 1 do begin
      graph.Canvas.Pixels[i*10, 100] := clRed;
      end;

   finally
   FreeAndNil(parameter);
   end;

end;

{procedure TDatei.DateilisteChange(Sender: TObject);

begin
  if dateiliste.Filename = 'gaga.ink' then
  ok.Enabled := true;
{else datei.laden.Enabled := false;
if datei.Dateiliste.Filename = '*.*' then
datei.ok.Enabled := true
else datei.ok.Enabled := false;
end; }

end.
Vielleicht sei noch angemerkt, dass ich letztendlich die Daten grafisch verarbeiten möchte. Wenn ich die erstmal als Integer-Werte habe, ist alles klar, hoffe ich.

Klaus01 27. Jul 2006 13:39

Re: undeclared identifier
 
Vielleicht so?

Delphi-Quellcode:
procedure tdatei.ladenClick(Sender: TObject);
  var    
    SL: TStringList;    
    i: Integer;    
    T: Textfile;    
    SInString: String;    

   
begin    
  if (opendialog.Execute) then begin
    SL := TStringList.Create;
    try
      AssignFile(T,opendialog.FileName);
      Reset(T);    
      while (not Eof(T)) do
        begin  
          ReadLn(T,SInString);
          SL.Delimiter := ';';
          SL.DelimitedText := SInString;
          listbox1.columns:=SL.Count;
          for i := 0 to SL.Count-1 do
            listbox1.Items.add(sl.Strings[i]);
         { oder alles in einem Rutsch
           listbox.items.add(sl.text);
         }

        end;
    finally
      SL.Free;
    end;
  end;
  CloseFile(T);
end;
Vielleicht liege ich auch total daneben.

Grüße
Klaus

Yann 27. Jul 2006 13:56

Re: undeclared identifier
 
Wow, fantastisch!
Das funktioniert super. Ichs nur noch nicht ganz nachvollzogen. Jedenfalls kommen die kommagetrennten Werte in "sl.Strings[i]" raus, oder?
Wenn ich jetzt schreibe "Strtoint(sl.Strings[i])" werden dann nicht jeweils die Strings in Integer-Werte umgewandelt (falls möglich) und ich kann sie weiterverwenden?

Vielen Dank!
Yann

Klaus01 27. Jul 2006 14:02

Re: undeclared identifier
 
In der Stringlist sind die Werte die in der csv Datei mit
einem ; getrennt waren in Zeilen angeordnet.

1;2;3;4

ist in der Stringlist

1
2
3
4

Auf diese Strings kannst Du mit Stringlist.Strings[i] zugreifen
und damit machen was so alles erlaubt ist.


Grüße
Klaus

Yann 27. Jul 2006 14:06

Re: undeclared identifier
 
Super! :-D
Die grafische Umsetzung klappt auch sogleich!

Nochmals vielen Dank! Das ist ein starkes Forum hier, mit so vielen Mitgliedern online. Toll!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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