Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Für Fragen von Einsteigern und Programmieranfängern...
carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von carli »

Bauer321 hat geschrieben:das ist eine Form(FMoreV: TFMoreV;)
Ja kannst du die bitte posten?

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Maik81ftl »

Bauer321 hat geschrieben:Source... (zip|~254KB)
(habe vor ca.30sec die datei nochmal minimal verändert....der problemfall befindet sich in der unit "uaddversion")
Leider muß ich mich mal auch der Praktichen Hilfe ausklinken. kann wenn nur via Theorie was beisteuern. Grund siehst in meinem System.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

aso ja okay.

das ist der code von FMoreV:

Code: Alles auswählen

unit uaddversion;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  EditBtn, ComCtrls, Buttons, ExtendedNotebook;
 
type
 
  { TFMoreV }
 
  TFMoreV = class(TForm)
    BitBtn1: TBitBtn;
    depath1: TDirectoryEdit;
    depath10: TDirectoryEdit;
    depath11: TDirectoryEdit;
    depath12: TDirectoryEdit;
    depath13: TDirectoryEdit;
    depath14: TDirectoryEdit;
    depath15: TDirectoryEdit;
    depath16: TDirectoryEdit;
    depath2: TDirectoryEdit;
    depath3: TDirectoryEdit;
    depath4: TDirectoryEdit;
    depath5: TDirectoryEdit;
    depath6: TDirectoryEdit;
    depath7: TDirectoryEdit;
    depath8: TDirectoryEdit;
    depath9: TDirectoryEdit;
    ename12: TEdit;
    ename6: TEdit;
    eopt10: TEdit;
    eopt11: TEdit;
    eopt12: TEdit;
    eopt13: TEdit;
    eopt14: TEdit;
    eopt15: TEdit;
    eopt16: TEdit;
    eopt2: TEdit;
    eopt3: TEdit;
    eopt4: TEdit;
    eopt5: TEdit;
    eopt6: TEdit;
    eopt7: TEdit;
    eopt8: TEdit;
    eopt9: TEdit;
    ever1: TEdit;
    eopt1: TEdit;
    ename1: TEdit;
    ename10: TEdit;
    ename11: TEdit;
    ename13: TEdit;
    ename14: TEdit;
    ename15: TEdit;
    ename16: TEdit;
    ename2: TEdit;
    ename3: TEdit;
    ename4: TEdit;
    ename5: TEdit;
    ename7: TEdit;
    ename8: TEdit;
    ename9: TEdit;
    ever10: TEdit;
    ever11: TEdit;
    ever12: TEdit;
    ever13: TEdit;
    ever14: TEdit;
    ever15: TEdit;
    ever16: TEdit;
    ever2: TEdit;
    ever3: TEdit;
    ever4: TEdit;
    ever5: TEdit;
    ever6: TEdit;
    ever7: TEdit;
    ever8: TEdit;
    ever9: TEdit;
    ExtendedNotebook1: TExtendedNotebook;
    fnpath1: TFileNameEdit;
    fnpath10: TFileNameEdit;
    fnpath11: TFileNameEdit;
    fnpath12: TFileNameEdit;
    fnpath13: TFileNameEdit;
    fnpath14: TFileNameEdit;
    fnpath15: TFileNameEdit;
    fnpath16: TFileNameEdit;
    fnpath2: TFileNameEdit;
    fnpath3: TFileNameEdit;
    fnpath4: TFileNameEdit;
    fnpath5: TFileNameEdit;
    fnpath6: TFileNameEdit;
    fnpath7: TFileNameEdit;
    fnpath8: TFileNameEdit;
    fnpath9: TFileNameEdit;
    GroupBox1: TGroupBox;
    GroupBox10: TGroupBox;
    GroupBox11: TGroupBox;
    GroupBox12: TGroupBox;
    GroupBox13: TGroupBox;
    GroupBox14: TGroupBox;
    GroupBox15: TGroupBox;
    GroupBox16: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;
    GroupBox8: TGroupBox;
    GroupBox9: TGroupBox;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label2: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label3: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label35: TLabel;
    Label36: TLabel;
    Label37: TLabel;
    Label38: TLabel;
    Label39: TLabel;
    Label4: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Label48: TLabel;
    Label49: TLabel;
    Label5: TLabel;
    Label50: TLabel;
    Label51: TLabel;
    Label52: TLabel;
    Label53: TLabel;
    Label54: TLabel;
    Label55: TLabel;
    Label56: TLabel;
    Label57: TLabel;
    Label58: TLabel;
    Label59: TLabel;
    Label6: TLabel;
    Label60: TLabel;
    Label61: TLabel;
    Label62: TLabel;
    Label63: TLabel;
    Label64: TLabel;
    Label65: TLabel;
    Label66: TLabel;
    Label67: TLabel;
    Label68: TLabel;
    Label69: TLabel;
    Label7: TLabel;
    Label70: TLabel;
    Label71: TLabel;
    Label72: TLabel;
    Label73: TLabel;
    Label74: TLabel;
    Label75: TLabel;
    Label76: TLabel;
    Label77: TLabel;
    Label78: TLabel;
    Label79: TLabel;
    Label8: TLabel;
    Label80: TLabel;
    Label9: TLabel;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    TabSheet6: TTabSheet;
    TabSheet7: TTabSheet;
    TabSheet8: TTabSheet;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ReloadContent();
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  FMoreV: TFMoreV;
 
implementation
uses umain;
 
{$R *.lfm}
 
{ TFMoreV }
 
procedure TFMoreV.FormCreate(Sender: TObject);
begin
  ReloadContent();
end;
 
//nach dem start soll hier der inhalt aus den arrays in die felder geschrieben werden
procedure TFMoreV.ReloadContent();
var
  o, p, q, r, s: TObject;
  x: integer;
begin
For x := 1 To 16 Do
  Begin
    o := FindChildControl('ename' + inttostr(x));
    p := FindChildControl('fnpath' + inttostr(x));
    q := FindChildControl('depath' + inttostr(x));
    r := FindChildControl('ever' + inttostr(x));
    s := FindChildControl('eopt' + inttostr(x));
    If Assigned(o) And (o Is TEdit)
      Then Begin
        TEdit(o).text := vname[x];
      end;
    If Assigned(p) And (o Is TFileNameEdit)
      Then Begin
        TFileNameEdit(p).filename := path[x];
      end;
    If Assigned(q) And (o Is TDirectoryEdit)
      Then Begin
        TDirectoryEdit(q).directory := dpath[x];
      end;
    If Assigned(r) And (r Is TEdit)
      Then Begin
        TEdit(r).text := ver[x];
      end;
    If Assigned(s) And (s Is TEdit)
      Then Begin
        TEdit(s).text := opt[x];
      end;
  end;
end;
 
//Hier soll der inhalt in die arrays eingelesen werden
procedure TFMoreV.BitBtn1Click(Sender: TObject);
var
  o, p, q, r, s: TObject;
  x: integer;
begin
For x := 1 To 16 Do
  Begin
    o := FindChildControl('ename' + inttostr(x));
    p := FindChildControl('fnpath' + inttostr(x));
    q := FindChildControl('depath' + inttostr(x));
    r := FindChildControl('ever' + inttostr(x));
    s := FindChildControl('eopt' + inttostr(x));
    If Assigned(o) And (o Is TEdit)
       then begin
         Caption:= 'O  is TEdit ';
         if TEdit(o).text <> '' then vname[x] := TEdit(o).text
            else vname[x] := Caption + ' & FMain.vname[x] = ' + vname[x];
       end;
 
    If Assigned(o) And (o Is TEdit)
      Then Begin
        if TEdit(o).text <> '' then vname[x] := TEdit(o).text;
      end;
    If Assigned(p) And (p Is TFileNameEdit)
      Then Begin
        if TFileNameEdit(p).filename <> '' then path[x] := TFileNameEdit(p).filename;
      end;
    If Assigned(q) And (q Is TDirectoryEdit)
      Then Begin
        if TDirectoryEdit(q).directory <> '' then dpath[x] := TDirectoryEdit(q).directory;
      end;
    If Assigned(r) And (r Is TEdit)
      Then Begin
        if TEdit(r).text <> '' then opt[x] := TEdit(r).text;
      end;
    If Assigned(s) And (s Is TEdit)
      Then Begin
        if TEdit(s).text <> '' then ver[x] := TEdit(s).text;
      end;
  end;
 
//nur zum testen obs funktioniert hat
ShowMessage('vname[1] = '+vname[1]+sLineBreak+
            'path[1] = '+path[1]+sLineBreak+
            'dpath[1] = '+dpath[1]+sLineBreak+
            'ver[1] = '+ver[1]+sLineBreak+
            'opt[1] = '+opt[1]);
 
FMoreV.hide;
end;
 
end.
www.mcpatcher.net | www.hoeper.me

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

keiner der mir noch irgenwie helfen kann?
also es muss ja irgendwie am elternobjekt liegen nur weiß ich nicht wie ich es anpassen kann/muss
www.mcpatcher.net | www.hoeper.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von carli »

Wie ich ahnte.
greif einfach auf ename1 direkt zu.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

wie meinste das?
also wenn ich zum beispiel das hier eingebe gehts:
opt[1] := eopt1.text;
...was mich dann auch schon wieder ein wneig dran zweifeln lässt das es am elternobjekt liegt
www.mcpatcher.net | www.hoeper.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von carli »

Warum hast du überhaupt 80 Elemente mit genau denselben Eigenschaften erstellt und suchst jetzt nach FindChildControl('ename' + inttostr(x)); und co.
Erstelle die Komponenten doch dynamisch, lege die Komponenten anhand eines Prototyps im Formular an. Wenn du die in der Create-Methode erstellst, kannst du dir die Elemente auch gleich merken.
Sind die 80 Elemente immer genau 80? Oder hoffst du, dass man niemals mehr braucht?

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von DiBo33 »

Versuch doch einfach mal FindComponent() statt FindChildControl()

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

carli hat geschrieben:Warum hast du überhaupt 80 Elemente mit genau denselben Eigenschaften erstellt und suchst jetzt nach FindChildControl('ename' + inttostr(x)); und co.
Erstelle die Komponenten doch dynamisch, lege die Komponenten anhand eines Prototyps im Formular an. Wenn du die in der Create-Methode erstellst, kannst du dir die Elemente auch gleich merken.
Sind die 80 Elemente immer genau 80? Oder hoffst du, dass man niemals mehr braucht?
hört sich sehr interessant an. wenn du mir nen tutorial oder ne kleine erklärung mit einem Beispiel mach könntest wäre das sehr hilfreich. Ich dachte schon häufiger an sowas nur ich habs halt noch nie gemacht und keine ahnung wie ich das anstellen soll. dehalb habe ich einfach in einem TNotebook die dinge angeordnet wie es später sein soll(sicherleich im gegensatz zu deiner lösung sehr umständlich)
www.mcpatcher.net | www.hoeper.me

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

DiBo33 hat geschrieben:Versuch doch einfach mal FindComponent() statt FindChildControl()
dankedanke ;) das geht :D

... dann habe ich noch ein Frage und zwar funktioniert hir auch was nicht:

Code: Alles auswählen

for x := 1 to 16 do
    if (path[x] <> '') and (ver[x] <> '') and (Application.HasOption(opt[x]))
       then begin
         minecraftbackup();
         if FileExistsUTF8(path[x])= true
            then begin
              if dpath[x] = '' then dpath[x] := mcpath;
              if FileExistsUTF8(dpath[x]+'bin\minecraft.jar')=true
                 then DeleteFileUTF8(dpath[x]+'bin\minecraft.jar');
              if not copyfile(path[x],dpath[x]+'bin\minecraft.jar')
                 then showmessage('There was an error the Backup did not work');
            end;
         runmc(path[x]);
         Close;
         Application.Terminate();
       end;
und zwar soll der in meinen arrays wenn bestimmte optionen erfüllt sind ob ein bestimmter code als option mitgegeben wurde.
ich habe das programm dann wie folgt verknüpft: D:\Informatik\mcpatcher\public\MCPatcher.exe -der text aus opt[1] .... und das ging nicht. wenn ich jedoch folgendes gemacht habe: D:\Informatik\mcpatcher\public\MCPatcher.exe -a1.0.15 (a1.0.15) ist eine feste option, die frage ich einfach so ab:

Code: Alles auswählen

if Application.HasOption('a1.0.15') then begin
     Extractjar2('a-1.0.15','Ver. a1.0.15');
     runmc('');
     Close;
     Application.Terminate();
   end;
das geht(also nur damit keiner auf die idee kommt es könne ja flasch verknüpft worden sein)
www.mcpatcher.net | www.hoeper.me

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von carli »

Bauer321 hat geschrieben:hört sich sehr interessant an. wenn du mir nen tutorial oder ne kleine erklärung mit einem Beispiel mach könntest wäre das sehr hilfreich.
Warum willst du immer ein Tutorial??
Folgender Deal: Ich schreibe dir den Beispielcode hin und du machst ein Tutorial draus, das du dann auch aufs LazWiki stellst.


Hier der Code: (Zum Testen reicht ein leeres Formular, die Komponenten werden in onCreate erzeugt. Auch das ButtonClick hängt der selbstständig an)

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
var ed: TEdit;
    but: TButton;
begin
  ed:=TEdit.Create(self);
  ed.Parent:=self;
  ed.top:=8;
  ed.Left:=10;
  ed.Width:=ClientWidth-2*ed.left;
  ed.text:='Bitte geben sie den Text ein';
 
  but:=TButton.Create(self);
  but.parent:=self;
  but.top:=ed.Top+ed.Height;
  but.left:=ed.Left;
  but.Caption:='Klickmich';
  but.OnClick:=@ButtonClick;
end;
 
procedure TForm1.ButtonClick(Sender: TObject);
begin
  showmessage('Hallo Welt');
end;
 
end.
Wie du siehst, hab ich hier gleich mal mit der Positionierung der Objekte rumgespielt. Als Parent musst du in deinem Fall dann das TabSheet-Frame setzen.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

ok sag mir noch wie ich das nennen soll und ich guck mal was ich zu schreiben kann

ja und warum ich gerne irgendnen link zu nem tutorial habe, das ist einfach weil man da gut hilfe findet und das dann deutlich einfacher ist als wenn man die sachen immer wieder erklärt oder wie auch immer
www.mcpatcher.net | www.hoeper.me

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Maik81ftl »

Bauer321 hat geschrieben:ok sag mir noch wie ich das nennen soll und ich guck mal was ich zu schreiben kann

ja und warum ich gerne irgendnen link zu nem tutorial habe, das ist einfach weil man da gut hilfe findet und das dann deutlich einfacher ist als wenn man die sachen immer wieder erklärt oder wie auch immer
Gebe dir mal einen tipp, was ich auf jedenfall auch noch machen werde. suche dir ggf. bei Amazon ein Buch für Lazarus. ich werd mir da auf jeden noch eines kaufen. Jemand 'nen Guten Tip? will ja kein geld "verbrennen".
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von carli »

Bauer321 hat geschrieben:ok sag mir noch wie ich das nennen soll und ich guck mal was ich zu schreiben kann
Nenn's "Formular-Komponenten in Lazarus dynamisch erzeugen"
Und viel Spaß beim Schreiben ;)

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Fehler? - Geht nicht aber ich finde den Fehler leider nicht

Beitrag von Bauer321 »

www.mcpatcher.net | www.hoeper.me

Antworten