Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism wie soll die schleife geschrieben werden?? (https://www.delphipraxis.net/104222-wie-soll-die-schleife-geschrieben-werden.html)

karim2008 29. Nov 2007 13:51


wie soll die schleife geschrieben werden??
 
Delphi-Quellcode:
unit analyserMW;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus,
  engine, faults, StdCtrls, ExtCtrls, ComCtrls, ToolWin;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    SetFileBase1: TMenuItem;
    Colors1: TMenuItem;
    Analyse1: TMenuItem;
    Panel1: TPanel;
    ListBox1: TListBox;
    Label1: TLabel;
    Panel2: TPanel;
    ListBox2: TListBox;
    Label2: TLabel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    ListBox3: TListBox;
    StatusBar1: TStatusBar;
    PaintBox1: TPaintBox;
    Label3: TLabel;
    Panel7: TPanel;
    PaintBox2: TPaintBox;
    procedure SetFileBase1Click(Sender: TObject);
    procedure Colors1Click(Sender: TObject);
    procedure Analyse1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure ListBox3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure PaintBox2Paint(Sender: TObject);
  private
    { Private declarations } 
    dhh, dhc: integer;
    hindex: array[0..6] of byte;
    cfn: string;
    procedure readfile(s: string);
  public
    { Public declarations } 
  end;

var
  Form1: TForm1;

implementation

uses fileselector;

{$R *.dfm} 

procedure TForm1.SetFileBase1Click(Sender: TObject);
begin
  if filelist.showmodal = mrok then begin;
  end;
end;

procedure TForm1.Colors1Click(Sender: TObject);
begin
  if colorcode.showmodal= mrok then begin;
  end;
end;

procedure tform1.readfile;
var f: textfile; st: string; c: char;
begin;
  assignfile(f,s);

  reset(f);
  while not eof(f) do begin;

    readln(f,st);
    ps.parseline(st);
  end;
  closefile(f);
end;

procedure TForm1.Analyse1Click(Sender: TObject);
var i,n:integer; s: string;
begin
  n:= filelist.nfiles;
  ps.reset;
  setlength(operations, n);
  filenumber:=0;
  if n>0 then for i:=0 to n-1 do begin;
    if filelist.isfile(i,s) then begin;
      statusbar1.Panels[0].Text:=extractfilename(s);
      statusbar1.repaint;
      cfn:=s;
      readfile(s);
      operations[filenumber]:=chip[0].nfl;
      inc(filenumber);
      statusbar1.Panels[1].Text:=ps.device;
      statusbar1.repaint;
    end else begin; {its a comment} 

    end;
  end;
  listbox1.clear;
  for i:=0 to 255 do begin;
    if i=52 then begin;
      s:='q';
    end;
    chip[i].countfaults;
    with chip[i] do begin;
      if (nfaults+ npersistantfaults = 0) then listbox1.items.add(format('%3d '+#9+'%6d',[i, nfaults + npersistantfaults]))
      else listbox1.items.add(format('%3d '+#9+'%6d'+#9+'     (%d)',[i, nfaults + npersistantfaults, firstfile]))
    end;
  end;
so das programm ist noch nicht fertig!ich brauch hier eine schleife damit ich die daten auf ACII format bekommen kann!ich hab bis jetzt noch kein plan kann mir jemand helfen????

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
[edit=SirThornberry]Titel auf Wunsch Mehrerer grammatikalisch korrigiert - Mfg, SirThornberry[/edit]

mkinzler 29. Nov 2007 16:06

Re: wie soll die schleife geschrieben wird??
 
Den ASCII-Code eines Zeichens kannst du mit ORD() ermittlen

gmc616 29. Nov 2007 18:06

Re: wie soll die schleife geschrieben wird??
 
OT: Mal ne kurze Frage.
Müssen im .Net nach begin ';' (Semikolon) geschrieben werden? Ich denke, es stört zwar das Programm nicht, sieht aber irgendwie unsauber und verwirrend aus, oder?

Jürgen Thomas 29. Nov 2007 18:15

Re: wie soll die schleife geschrieben wird??
 
Zitat:

Zitat von gmc616
OT: Mal ne kurze Frage.
Müssen im .Net nach begin ';' (Semikolon) geschrieben werden? Ich denke, es stört zwar das Programm nicht, sieht aber irgendwie unsauber und verwirrend aus, oder?

Nein, muss nicht. Eigentlich ist es falsch, denn begin...end gehören zusammen. Aber das einzelne Semikolon stellt für den Compiler einen leeren Befehl dar, und der stört in der Tat nicht. Jürgen

DeddyH 29. Nov 2007 18:18

Re: wie soll die schleife geschrieben wird??
 
In diesem Falle nicht, aber wenn man sowas macht:
Delphi-Quellcode:
for i := 0 to irgendwas do;
  Schleifenabarbeitung;
wundert man sich. Und das ist sehr schwer zu finden.

Khabarakh 29. Nov 2007 18:32

Re: wie soll die schleife geschrieben wird??
 
Zitat:

Zitat von gmc616
Müssen im .Net nach begin ';' (Semikolon) geschrieben werden?

Das hat nun aber wirklich nichts mit dem Thread zu tun, denn das ist sicherlich kein .Net-Code :stupid: . Aber allgemein: Delphi.Net ist immer noch Pascal und außerdem gerade auf Kompatibilität mit Win32 ausgelegt, warum sollten sich so elementare Syntax-Bestandteile ändern?

alzaimar 29. Nov 2007 19:39

Re: wie soll die schleife geschrieben wird??
 
[quote="Jürgen Thomas"]
Zitat:

Zitat von gmc616
Aber das einzelne Semikolon stellt für den Compiler einen leeren Befehl dar, und der stört in der Tat nicht. Jürgen

Nein.
Das Semikolon trennt in einem 'Compound Statement' das einzelne Statement vom Rest. Es ist sozusagten das Trennzeichen zwischen einzelnen Pascal-Anweisungen. Aus diesem Grund muss ein ';' auch nicht zwischen zwei 'End'...s

karim2008 3. Dez 2007 11:26

Re: wie soll die schleife geschrieben wird??
 
Ist es möglich dass ich Listbox durch ein Array zu ersetzen?

Nuclear-Ping 3. Dez 2007 11:37

Re: wie soll die schleife geschrieben wird??
 
Ja, aber statt einem Array würde ich TList oder TStringList (je nachdem) vorschlagen.

Dezipaitor 3. Dez 2007 12:21

Re: wie soll die schleife geschrieben wird??
 
Die "Richtigschreibung" des Titels ist so traurig, dass ich mir einen Kommentar nicht verkneifen konnte.

karim2008 3. Dez 2007 13:34

Listbox in ein label auzugeben!
 
wie gesagt bin kein delphi programmierer° aber es gibt eine möglichkeit den Inhalt von dem Listbox1 noch einmal in einem Label auszugeben?hat jemand villeicht eine Idee?

sirius 3. Dez 2007 13:38

Re: wie soll die schleife geschrieben wird??
 
Delphi-Quellcode:
label1.caption:=listbox1.items.text;
//oder nur eine Zeile
label1.caption:=listbox1.items[zeilennummer];
Edit: Kannst du mal in dem ersten Beitrag von .Net auf Win32 ändern?

karim2008 3. Dez 2007 13:50

Re: wie soll die schleife geschrieben wird??
 
wo soll ich genau die schleife in obere programm einfügen!wie gesagt bin kein delphi programmierer!also sorry wenn meine frage zu blöd ist!:)

inherited 3. Dez 2007 13:56

Re: wie soll die schleife geschrieben wird??
 
So wird dir bestimmt keiner helfen!
1. Was genau möchtest du erreichen? Versuche ein simples(!) Beispielproblem zu finden, zB "Ich möchte einen Integer als das Zeichen darstellen, dessen ASCII-Wert er repräsentiert". Stelle möglichst präzise dein Problem dar sodass es jeder auf anhieb versteht.
2. reduziere den geposteten Quelltext auf die relevante Stelle und poste nicht alles. Dadurch wird der Anschein erweckt dass du möchtest dass dir jemand das fertig dareinschreibt und es ist unübersichtlich. Makiere wenigstens die relevante stelle mit einem Kommentar im QT oder ähnlichem.
3. Ich selbst achte auch nicht pingelig auf rechtschreibung, insbesondere mit groß-und kleinschreibung bin ich schlampig. Aber immerhin achte ich auf größtenteils wichtige Grammatik. Lese dir am Besten bevor du auf "Posten" klickst deinen Beitrag noch einmal durch.

karim2008 3. Dez 2007 14:19

Re: wie soll die schleife geschrieben wird??
 
ok!tut mir echt leid! :cry:
so versuch nochmal mein problem besser zu erklären
das ist genau zwischen zeile 108 und 117!das programm ruft ja messwerte von analyserMw.dfm an und gibt die messweret in 3 spalten!ich wollte die messwerte übertragen so durch markieren und danach kopieren aber das geht nicht dewegen musste ich jeder messwerte per hand schreiben!gibt es eine möglichkeit dass ich die 3 spalte auf einmal markieren kann und dann kopieren!Vielleicht kann man ja eine schleife oder procedure noch schreiben so hab ich danach direkt die messwerte kopieren.??
lg

karim2008 3. Dez 2007 16:52

Rechte Maustaste wieder aktivieren!
 
Ich hab durch zufall gelesen dass ein Mitglied das gleich problem gehabt hat
Also auf dem listbox hab ich kein zugriff damit meine ich die Rechte Maustaste ist deaktiviert deswegen kann ich das Inhalt nicht kopieren!Soll ich im programm was ändern??wie kann man die rechte Maustaste wieder aktivieren?

Nuclear-Ping 3. Dez 2007 20:35

Re: wie soll die schleife geschrieben wird??
 
Du musst das alles selber machen. Delphi nimmt dir zwar viel Arbeit ab, aber hellsehen kann es noch nicht.

Du könntest z.B. durch einen Doppelklick auf die Listbox den gerade markierten Eintrag "kopieren", was immer du damit auch meinst.

Die Listbox anklicken und im Objektinspektor (F11) unter "Ereignisse" in das leere Feld bei OnDoubleClick doppelklicken. Da kannst du zum Beispiel reinschreiben:
Delphi-Quellcode:
procedure TForm1.ListBox1DoubleClick(Sender: TObject);
begin
  if (ListBox1.ItemIndex >= 0) then
    showmessage(ListBox1.Items[ListBox1.ItemIndex]);
  // oder Label1.Caption := ListBox1.Items[ListBox1.ItemIndex];
  // oder IrgendeineStringList.Add (ListBox1.Items[ListBox1.ItemIndex]);
  // oder ... oder ... oder ...
end;

karim2008 4. Dez 2007 11:59

ich kann die Einträge noch nicht kopieren
 
Danke!aber ich hab mein Problem noch nicht gelöst!Ich kann die Einträge in Listbox1 noch nicht kopieren!!! roll:

Nuclear-Ping 4. Dez 2007 12:51

Re: wie soll die schleife geschrieben wird??
 
Hallo? Liest du auch, was man dir sonst noch so schreibt? Vielleicht solltest du mal etwas genauer werden, was du genau willst, wenn du "kopieren" meinst? Wir sind schon auf der zweiten Seite und eigentlich noch keinen Schritt weiter.

karim2008 4. Dez 2007 13:15

Re: wie soll die schleife geschrieben wird??
 
Ich brauche eine procedure damit ich die Einträge von dem listbox1 kopieren kann!Momentan ist der rechtmaustasture deaktiviert!wie kann ich wieder aktivieren!!

Nuclear-Ping 4. Dez 2007 14:02

Re: wie soll die schleife geschrieben werden??
 
Hab ich doch geschrieben, das musst du im Falle der Listbox selber machen, wenn du dir so eine "Kontext-Menü"-Funktion wünscht, wie wenn du in Word oder im Explorer mit der rechten Maustaste klickst.

Du musst ein "TPopupMenu" einfügen, in diesen deine Einträge definieren (Kopieren, Ausschneiden, ...) und im Objektinspektor für die Listbox unter der Eigenschaft "Popup Menu" dieses Menü angeben.
Dann musst du die Events (was passiert, wenn man auf Kopieren klickt) selber programmieren. Das habe ich dir aber auch geschrieben.
Und gleichzeitig gemeint, dass man das auch per Doppelklick machen kann. Da du (immernoch) nicht genau definiert hast, was du mit "kopieren" meinst, gehe ich jetzt einfach mal davon aus, dass du die Zwischenablage meinst.
Mein Beispiel was ich dir gegeben habe zeigt, was man machen könnte, wenn man per Doppelklick auf ein Item in der Listbox klickt. In dem Fall einfach per ShowMessage anzeigen. Wie man Sachen in die Zwischenablage kopiert, weiß ich aus dem Kopf nicht, da müßte ich suchen. Das überlasse ich aber mal dir. ;) Stichworte sollten sein: "Delphi Copy Text Clipboard" oder für die Forensuche "Text Zwischenablage kopieren".

Nachtreiter 4. Dez 2007 14:33

Re: wie soll die schleife geschrieben werden??
 
Hallo karim2008,

in den propertis von ListBox1 musst Du einstellen das alle markiert werden dürfen (MultiSelect).
oder
durch alle Einträge durchlaufen (ListBox1.Items.Count-1), in eine Variable schreiben und ins Clipboard schreiben.

Du schriebst was von ASCII konvertieren aber Du liest die Werte doch aus einem Textfile das sind doch ASCII Werte oder?

viel Spass

karim2008 4. Dez 2007 14:59

Re: wie soll die schleife geschrieben werden??
 
Endlich hat mich jemand verstanden!
Wie gesagt das programm hab ich nicht selbst geschrieben sondern bin nur als ein einfacher User und wollte die einträge die im Listbox erscheinen einfach durch ein maus klick markieren und dann kopieren aber es geht nicht!deswegen hab ich ja euch als profi Delphi programmierer gefragt ob man was im programm einstellen kann damit ich die Einträge auf einmal kopieren kann

Nachtreiter 4. Dez 2007 15:00

Re: wie soll die schleife geschrieben werden??
 
Hallo karim2008,
erkläre doch mal den nachfolgenden Code, der ist von Dir.

Delphi-Quellcode:
  for i:=0 to 255 do begin;
if i=52 then begin;
  s:='q';
end;
chip[i].countfaults;
with chip[i] do begin;
  if (nfaults+ npersistantfaults = 0) then
    listbox1.items.add(format('%3d '+#9+'%6d',[i, nfaults + npersistantfaults]))
  else
    listbox1.items.add(format('%3d '+#9+'%6d'+#9+'     (%d)',[i, nfaults + npersistantfaults, firstfile]))
end;
end;
Ist das Deine Schleife die Du suchst?

Du liest aus mehere Dateien Daten ein, zeigst dann aber nur von 0 bis 255 an?
Dann erzeugst Du die Spalten selber, einmal 2 oder dann 3?
Was ist chip?

karim2008 4. Dez 2007 15:17

Re: wie soll die schleife geschrieben werden??
 
es ist aber un wichtig was chip für dich ist!mein problem ist ja dass das Listbox1 was man nach dem ablauf das programm sieht ist schreibgeschützt!ich kann die einträge die im listbox erscheinen nicht mit Rechtmaus kopieren!die Frage ist Wie man Sachen in die Zwischenablage kopieren kann!!!!!

Nuclear-Ping 4. Dez 2007 15:30

Re: wie soll die schleife geschrieben werden??
 
Steht da: http://www.delphipraxis.net/internal...=815263#815263 Beitrag #22.

karim2008 4. Dez 2007 15:46

Re: wie soll die schleife geschrieben werden??
 
"Wie man Sachen in die Zwischenablage kopiert, weiß ich aus dem Kopf nicht, da müßte ich suchen. Das überlasse ich aber mal dir. Stichworte sollten sein: "Delphi Copy Text Clipboard" oder für die Forensuche "Text Zwischenablage kopieren". ""
Es mir noch nicht klar!Kann jemand vielleicht ein besschin verstandnis dafür und sagt mir was ich genau und wo schreiben soll!Wäre super lieb!Wie gesagt bin kein delphi programmierer!!WÄRE SUPER LIEB

Nuclear-Ping 4. Dez 2007 15:51

Re: wie soll die schleife geschrieben werden??
 
Was hindert dich daran, die Forensuche oder Google zu benutzen, um nach den Begriffen zu suchen?

Wenn du 1+1 zusammenzählen kannst, solltest du doch selber auf die Lösung kommen? Genug Anhaltspunkte hat man dir doch gegeben. Ggf. auch mal ein Einsteiger-Tutorial durcharbeiten? --> http://www.dsdt.info/tutorials/?cat=1

Nachtreiter 4. Dez 2007 16:23

Re: wie soll die schleife geschrieben werden??
 
Das Kopieren ins Clipboard ist ein bischen mehr als eine Zeile.
bei ...die Items einer Listbox in die Zwischenablage kopieren?
gibt es mehrere Lösungen.

Wenn ich wüste was chip ist könnte ich Dir sagen ob in dem Quellcode unsinn steht. Aber Du willst es nicht wissen.
Ich hoffe das ich Dir helfen konnte.

Viel Spass!

karim2008 4. Dez 2007 16:30

Re: wie soll die schleife geschrieben werden??
 
ja chip ist ein elektrische bauteil die ja überprüft werden!aber ich muss ehrlich sein sie sind wirklich super nett!aber wissen sie ja vielleicht wo ich das programm einfügen kann?

Nuclear-Ping 4. Dez 2007 16:49

Re: wie soll die schleife geschrieben werden??
 
karim, du kennst nicht zufällig taktaky? :mrgreen:

DeddyH 4. Dez 2007 16:52

Re: wie soll die schleife geschrieben werden??
 
[OT] Diesen Gedanken hatte ich auch schon :mrgreen: :zwinker: [/OT]

inherited 4. Dez 2007 17:01

Re: wie soll die schleife geschrieben werden??
 
Du tust die Funktion ListBoxToCLipboard komplett so wie sie ist irgendwo in deinen Quelltext zwischen die anderen Prozeduren, sie muss aber vor der Prozedur in der du sie aufrufst stehen, also pack sie am besten an den anfang.

DeddyH 4. Dez 2007 17:04

Re: wie soll die schleife geschrieben werden??
 
Zitat:

Zitat von inherited
..., sie muss aber vor der Prozedur in der du sie aufrufst stehen, also pack sie am besten an den anfang.

Es sei denn, er definiert deklariert einen Prototyp im interface-Abschnitt.

karim2008 4. Dez 2007 17:13

Re: wie soll die schleife geschrieben werden??
 
ja gut werde ich machen!weil ich vorher am ende das programm geschrieben hab!und wie kann ich danach die zwischenablage finden?und sie wird automatisch aufgerufen??Hab ehrlich keine Ahnung!also sorry wenn meine frage zu blöd ist:)

DeddyH 4. Dez 2007 17:15

Re: wie soll die schleife geschrieben werden??
 
Es wird ja die Unit ClipBrd eingebunden. Also findest Du die Zwischenablage in der automatisch angelegten Variablen ClipBoard.

karim2008 5. Dez 2007 12:05

Re: wie soll die schleife geschrieben werden??
 
was in zwischenablage liegt ist nur das programm selbst!ich weiß nicht wo ich das programm geau einfügen kann damit nur die werte die im listbox in zwischenablage kopiert werden!weiß vieilleicht jemand wie ich das programm anpassen soll?wäre super lieb

inherited 5. Dez 2007 12:08

Re: wie soll die schleife geschrieben werden??
 
Zitat:

Zitat von inherited
Du tust die Funktion ListBoxToCLipboard komplett so wie sie ist irgendwo in deinen Quelltext zwischen die anderen Prozeduren, sie muss aber vor der Prozedur in der du sie aufrufst stehen, also pack sie am besten an den anfang.

Und dann rufst du sie, wo auch immer du möchtest, mit "ListBoxToClipboard(NamedeinerListbox)" auf

karim2008 5. Dez 2007 13:57

Re: wie soll die schleife geschrieben werden??
 
ich komme leider nicht weiter! :cry:

karim2008 5. Dez 2007 14:15

Re: wie soll die schleife geschrieben werden??
 
ich hab alles ausprobiert aber in zwischenablagen ist nur ein teil von dem programm kopiert und nicht was im listbox steht!weiss jemand was ich ändern soll oder wo soll ich das programm genau im Quellcode einfügen????
lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Seite 1 von 2  1 2      

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