![]() |
AW: Nummer der Datei um 1 erhöhen
Das local war auf die Procedure ButtonClick bezogen.
Weiss grad ned wie man das in der Delphi-Welt nennt (bin momentan Siemens SPS-versaut und da heissen die Dinger Lokal-Variablen) |
AW: Nummer der Datei um 1 erhöhen
Zitat:
|
AW: Nummer der Datei um 1 erhöhen
Ok dann hab ich da wohl was verdreht. :)
Dann halt im privaten abschnitt der classe TForm1 deklarieren Aber wie schon gesagt mit Aussagekräftigen Namen. Edit: Destotrotz vom rein logischen Denken wäre eine Private Variable eine die nur für die einzelne procedure/Function verwendet werden kann. Selbst wenn diese im bereich der jeweiligen Classe in dem Fall TForm1 privat deklariert wäre könnte ich auf diese zugreifen wenn ich mich in einer Procedure/Function die von dieser Classe erbt befinde. Dann wäre sie aber wieder für diese Classe Public da ich innerhalb der vererbten proceduren darauf zugreifen kann. Kuddelmuddel meiner Meinung nach. Privat ist für mich wenn ich nur in dieser einen procedure von außen(public/öffentlich) nicht zugreifen kann.
Delphi-Quellcode:
Kann man auf diese Variable von irgendwoher zugreifen?
procedure TForm1.Button3Click(Sender: TObject);
var x : Integer; Abgesehen innerhalb dieser procedure. Nein! Also nicht Public/öffentlich sondern Privat/Versteckt oder wie auch immer. Lokal wäre dann das selbe wie Privat. gruss |
AW: Nummer der Datei um 1 erhöhen
Zitat:
'lokal' bezieht sich auf die Sichtbarkeit innerhalb einer Methode. Du scheinst dich an der Nomenklatur (privat vs. lokal) zu stören. Das muss man einfach so hinnehmen, wie es ist. Es ist 'per definitionem' so. Die Schlüsselwörter könnten auch 'rot' und 'gestreift' heißen. 'protected', also geschützt, sind Variablen schließlich auch nicht wirklich, selbst wenn sie so deklariert sind. Zitat:
|
AW: Nummer der Datei um 1 erhöhen
Hallo an alle,
ich habe jetzt meinen Urlaub hinter mir und melde mich zurück. Meine Zählervariable (x) habe ich global deklariert und initialisiert,und ich muß sagen,es hat funktioniert. Warum funktioniert es nur dann,wenn die Variable global deklariert ist....??? Mfg AnfängerDelphi |
AW: Nummer der Datei um 1 erhöhen
Hallo,
Zitat:
Zitat:
Delphi-Quellcode:
Starte Dein Programm, wähle einen Ordern, der noch vollkommen jungfräulich ist (zur Not anlegen) und klick zweimal auf den Button. Im gewählten Ordner sollten nun die Dateien:
var
x : Integer; // hier rein procedure TForm1.Button3Click(Sender: TObject); var // x : Integer; hier raus datei : TextFile; pfad : String; begin pfad := JvDirectoryEdit1.Directory; x := 1; AssignFile(datei, pfad +'\'+ 'datei'+ IntToStr(x) + '.txt'); If not FileExists(pfad +'\'+ 'datei'+ IntToStr(x) + '.txt') then begin Rewrite(datei); CloseFile(datei); end else x := x+1; AssignFile(datei, pfad +'\'+ 'datei'+ IntToStr(x) + '.txt'); Rewrite(datei); CloseFile(datei); end; Datei1.txtliegen. Öffne die "Datei2.txt" mit einem Texteditor (z. B. mit Notepad). Schreibe einen beliebigen Text (gerne: "Hallo Welt!") und schließe den Texteditor - speichern nicht vergessen. Starte Dein Programm und klick einmal auf den Button. Öffne die Datei "Datei2.txt" und wundere Dich nicht, wenn da nix mehr drin steht. Zitat:
Delphi-Quellcode:
Gruß
procedure TForm1.Button3Click(Sender: TObject);
var datei : TextFile; pfad : string; s : string; x : Integer; begin pfad := JvDirectoryEdit1.Directory; x := 1; repeat s := pfad + '\' + 'datei' + IntToStr (x) + '.txt'; if not FileExists (s) then begin AssignFile (datei, s); Rewrite (datei); CloseFile (datei); Break end; Inc (x) until False end; |
AW: Nummer der Datei um 1 erhöhen
Hallo Volker,
Deine Aussagen sind natürlich korrekt. Fehler von mir,ich meinte damit die nachfolgende Prozedur,bei der ich eine Variable global definiert habe,Sorry. Vorher wurde nur der Letzte Wert aus meinem ListView in die Datei geschrieben,obwohl mehrere Einträge vorhanden waren. Jetzt werden alle ListView-Einträge in die Datei übernommen. Ist doch eine recht einfache Lösung,oder gibt es noch einen anderen Weg???
Delphi-Quellcode:
var vListe : Smallint=1;
procedure TForm1.Button5Click(Sender: TObject); var i : Smallint; ze,sp1,sp2,sp3 : String; begin // dies ist nur ein Auszug von dieser Prozedur for i := 0 to ListView1.Items.Count -1 do begin ze := ListView1.Items[i].Caption; sp1 := ListView1.Items[i].SubItems[0] sp2 := ListView1.Items[i].SubItems[1] sp3 := ListView1.Items[i].SubItems[2] inc(vListe); end; end; Mfg AnfängerDelphi |
AW: Nummer der Datei um 1 erhöhen
Hallo,
Zitat:
Einen anderen Weg gibt es vermutlich schon. Und eine Lösung, die ohne globale Variable auskommt gibt es vermutlich - nö, da bin ich mir fast sicher - auch. Was spricht gegen:
Delphi-Quellcode:
Solange Du uns nur zusammenhangslose Code-Krümelchen zur Verfügung stellst, wird das nix werden mit dem Aufzeigen anderer Wege. Aber: Wenn Du bis November warten möchtest, dann ist die Wahrscheinlichkeit für noch dunklere, noch trübere und vorallem mit dickem, zähem Nebel verhangene Tage doch deutlich höher als es dies im Moment der Fall ist; dann wird es vermutlich auch ein günstiger Zeitpunkt sein, mit der langen Stange in der milchigen Brühe herumzustochern, um vielleicht das passende (Weg oder Lösung) herauszupicken.
//var vListe : Smallint=1; <-- da weg
procedure TForm1.Button5Click(Sender: TObject); var vListe : Smallint; // <-- da hin i : Smallint; ze,sp1,sp2,sp3 : String; begin // dies ist nur ein Auszug von dieser Prozedur vListe := 1; for i := 0 to ListView1.Items.Count -1 do begin ze := ListView1.Items[i].Caption; sp1 := ListView1.Items[i].SubItems[0] sp2 := ListView1.Items[i].SubItems[1] sp3 := ListView1.Items[i].SubItems[2] inc(vListe); end; end; Nix für ungut! :wink: Gruß |
AW: Nummer der Datei um 1 erhöhen
Hallo Volker,
bis November werde ich nicht warten...8-) Ich habe leider nicht so viel Zeit,um mich jeden Tag mit programmieren zu beschäftigen. Bei mir läuft es wirklich nur nebenher. Das ist die komplette Prozedur.Soweit funktioniert es auch. Ich kann dir aber nicht sagen,wo der Fehler lag.
Delphi-Quellcode:
Aber trotzdem Danke für deine Hilfe.procedure TForm1.Button5Click(Sender: TObject); var pfad, ze, sp1, sp2, sp3 : String; excel : OleVariant; vListe, i : Smallint; begin pfad := Form1.JvDirectoryEdit1.Directory; try excel := CreateOleObject('Excel.Application'); if FileExists(pfad + '\Datei1.xls') then begin excel.Workbooks.open(pfad + '\Datei1.xls'); vListe := 1; for i := 0 to ListView1.Items.Count -1 do begin ze := ListView1.Items[i].Caption; sp1 := ListView1.Items[i].SubItems[0] sp2 := ListView1.Items[i].SubItems[1] sp3 := ListView1.Items[i].SubItems[2] inc(vListe); excel.Cells[vListe, 3] := sp1; excel.Cells[vListe, 4] := sp2; excel.Cells[vListe, 5] := sp3; end; excel.Visible:= true; end; finally excel := Unassigned; end; end; Mfg AnfängerDelphi |
AW: Nummer der Datei um 1 erhöhen
Ähm, worum ging es hier in diesem Thread nochmal?
Eine Datei mit Excel öffen und eine Variable (völlig sinnlos) inkrementieren? (ok, evtl. eine Zeitschleife gegen Timingprobleme) Was hat das mit "Nummer der Datei um 1 erhöhen" zu tun? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 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