Autor |
Beitrag |
deagle
      
Beiträge: 89
|
Verfasst: Di 27.08.02 03:46
Hallo Leute,
hab ja hier schon gute erfahrung gemacht deswgen wollte ich mal fragen wie ich das jetzt mache müsst mir nicht den ganzen Quellcode sagen ich will auch ein bisschen rumfummeln aber ein paar lehrreiche Punkte wäre nicht schlecht!  Also meine frage wie kann ich jetzt machen das der den Text aus der ComboBox nimmt und wie kann ich mehrere einträge in der Conbox Speichern ?? Also nicht nur eins ??
WinExec(PCHAR('ComboBox1.Text '+edit1.text) ,SW_SHOW); Ich habe das so versucht geht aber irendwie nicht!!
Thx for replay!!
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.08.02 08:35
Kann es auch nicht, da der Text der ComboBox bereits ein String ist und deshalb nicht mehr in Anführungszeichen gesetzt werden muss.
Des Weiteren besitzt eine ComboBox die Eigenschaft "Items": eine Stringliste, der man mit "Add" weitere Texte anhängen kann. Manche Funktionen (etwa das Auslesen von Sektionen einer INI-Datei usw.) erwarten als Parameter eine solche Stringliste, so dass man quasi mit einer einzigen Codezeile seine ComboBox füllen kann.
Dazu passt dann auch übrigens die Eigenschaft "ItemIndex", mit der du erfahren kannst, welcher Eintrag aus der Liste gewählt wurde, bzw. du kannst auf die Weise auch einen Eintrag gezielt festlegen.
Und drittens -aber das ist mehr eine Grundsatzsache!- die Funktion WinExec ist "obsolete". Sie ist zwar noch vorhanden, sollte aber nicht mehr benutzt werden. (Weil sie schon in der nächsten Delphi-Version nicht mehr vorhanden sein könnte, und dann geht die Fragerei los: "Warum funktioniert mein Programm nicht mehr?"  ) Stattdessen ließen sich ShellExecute oder auch CreateProcess verwenden. (Die Suche sollte dir in beiden Fällen einige Treffer bringen.)
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Di 27.08.02 09:30
jo ich brauch dabei noch ein bisschen hilfe bin neu mit Delphi!!
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.08.02 10:09
Eine Entschuldigung ist nicht erforderlich. Solange du bereit bist, selbst was zum Erfolg beizutragen (und das bist du ja ganz offensichtlich  ), solange wird dir hier sicher gern geholfen.
Was genau ist unklar?
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Di 27.08.02 10:45
Also das heisst das ich den Code wie am Ende nicht wiederholen kann!! richtig ??
MathiasSimmack hat folgendes geschrieben: | Kann es auch nicht, da der Text der ComboBox bereits ein String ist und deshalb nicht mehr in Anführungszeichen gesetzt werden muss.
|
Der Abschnitt sagt mir wie ich das in die ComboBox einfüge richtig hat auch geklappt!!!^
MathiasSimmack hat folgendes geschrieben: | Des Weiteren besitzt eine ComboBox die Eigenschaft "Items": eine Stringliste, der man mit "Add" weitere Texte anhängen kann. Manche Funktionen (etwa das Auslesen von Sektionen einer INI-Datei usw.) erwarten als Parameter eine solche Stringliste, so dass man quasi mit einer einzigen Codezeile seine ComboBox füllen kann.
Dazu passt dann auch übrigens die Eigenschaft "ItemIndex", mit der du erfahren kannst, welcher Eintrag aus der Liste gewählt wurde, bzw. du kannst auf die Weise auch einen Eintrag gezielt festlegen.
|
Darus versteh ich nur das ich WinExec nicht mehr nehmen soll weil es balb out ist jo aber mehr nicht!! Ich versteh nicht wenn ich Shellexecute nehme zeigt der mir immer fehler an muss ich da auch ein Dialog oder so machen ???
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.08.02 12:12
Hui, es wäre hilfreicher, wenn du erst das Zitat bringst und dann deinen Kommentar dazu schreibst.
Also, durch die beiden Anführungszeichen ist die Anweisung
Quelltext
selbst ein String. Der enthält aber nicht den Texteintrag aus der ComboBox sondern ganz einfach nur den Text "ComboBox1.Text". Musst du mal ausprobieren:
Quelltext 1: 2: 3: 4: 5:
| // Variante 1: ShowMessage('ComboBox1.Text');
// Variante 2: ShowMessage(ComboBox1.Text); |
Na, den Unterschied gemerkt?
Zu ShellExecute -
Der Fehler wird wahrscheinlich der sein, dass deinem Programm der Befehl unbekannt ist. Wenn du die Unit "ShellAPI" hinzufügst, dann sollte es gehen. Falls du Probleme mit der Syntax hast, müsstest du hier im Forum einige Beispiele finden. Ansonsten: sag Bescheid, dann zeig ich dir ein solches. 
|
|
SMI
      
Beiträge: 106
Win95-2003 / Debian / Suse
D1/D3/D6/D7
|
Verfasst: Di 27.08.02 12:36
1. Das mit WinExec stimmt nicht ganz, WinExec ist ein API Befehl, der hat eigentlich nicht viel mit Delphi zu tun. Damit der nicht mehr tut, müsste Microsoft ein Teil seiner API ändern, was ziemlich utopisch ist. Geh einfach mal in den Windows Explorer und duchsuche dein Festplatten nach Exe/Dlls die den Text WinExec enthalten, du wirst feststellen ,das ein großteil aller Windowsfunktionen immer noch Winexec verwendet. WinExec wurde nur durch CreateProcess ergänzt. Also wenn du mit winexec zurecht kommst verwende winexec.
2. Ein String ist immer in Apostropen eingeschlossen. Z.B.
'Dies ist ein Text' ist ein String, Delphi wird alles was innerhalb der Apostrophen steht als String und nicht als Befehl lesen!
Also
Quelltext 1:
| ShowMessage('edit1.text') ; |
wird das Resultat haben, das Delphi ein Dialogfeld aufmacht indem Wort Wörtlich folgendes steht:
"edit1.text"
Bei
Quelltext 1:
| ShowMessage('if a>b Then exit') ; |
käme folgendes heraus:
"if a>b Then exit"
Wenn du die Variable edit1.text ausgeben willst, dann darf die nicht innerhalt von Hochkommas stehen! Also z.B.:
Quelltext 1:
| ShowMessage(edit1.text) |
Probier es mal aus, und schau die die Beispiele von Strings in der Hilfe an, es wird dir helfen.
Nun, habe ich deine Frage Richtigverstanden, du möchtest, das der gerade angezeigt Text der ComboBox1 ausgeführt wird?
Dann müsste dein Befehl folgender maßen lauten
Quelltext 1:
| WinExec(pChar(ComboBox1.Text), SW_SHOW); |
3. Was vestehst dun eingenlich unter speichern?
Wenn du damit Daten auf einen Datenträger schreiben meinst, dann kannst du den ComboBox Inhalt am einfachsten via combobox1.Items.SaveToFile speichern und via combobox1.Items.LoadFromFile laden.
SMI
Code-Tags hinzugefügt. TINO
|
|
SMI
      
Beiträge: 106
Win95-2003 / Debian / Suse
D1/D3/D6/D7
|
Verfasst: Di 27.08.02 12:38
@MathiasSimmack Sorry, wir haben wohl zeitgleich, über das gleiche geschrieben
SMI
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.08.02 15:45
Bei einem Unterschied von 24 Minuten würde ich nicht von "zeitgleich" sprechen.  Aber ansonsten gibt´s nicht hinzuzufügen, abgesehen von diesem PSDK-Hinweis zu WinExec:
PSDK hat folgendes geschrieben: | Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function. |
|
|
SMI
      
Beiträge: 106
Win95-2003 / Debian / Suse
D1/D3/D6/D7
|
Verfasst: Di 27.08.02 16:56
@MathiasSimmack
Zeitgleich würde ich schon sagen, wenn man bedenk dass ich angefangen habe zu schreiben, dann Mittag gemacht habe und dann in aller Ruhe weiter geschrieben habe.
Zu WunExec:
Should heißt sollte, also man muss nicht, man kann!
In der Hilfe von Delphi steht z.B. auch zum Typ Real:
"Der Typ Real dient der Abwärtskompatibilität zu früheren Versionen von Delphi und Borland Pascal. Das Speicherformat des Typs Real ist nicht optimal auf die interne Registerarithmetik von CPUs der Intel-Familie abgestimmt, weshalb entsprechende Operationen langsamer ablaufen als bei Gleitkommatypen."
aber in den meisten Quell Codes, strotzt es nur so vor reals. Selbiges tifft im übrigen auch für Integerwerte zu, oder verwendest du immer LongInt?
Am besten solls jeder so machen wie es ihm am liebsten ist, und wie es am besten funktioniert.
SMI
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Di 27.08.02 18:29
Zitat: | Should heißt sollte, also man muss nicht, man kann! |
Ich würde es trotzdem nicht mehr machen, aus dem einfachen Grund, dass Ersatz geschaffen wurde, der wahrscheinlich auch etwas schneller ist. Gut dazu kann ich jetzt nichts genaues sagen. Aber außerdem hat man bei CreateProcess mehr Möglichkeiten. 
_________________ Viele Grüße
Jakob
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Di 27.08.02 21:02
Titel: hi
Hallo
Jetzt habe ich folgendes Prob wenn ich das Programm testen will, geht das auch nur wenn ich aus der ComBox1 ein Pfad aussuche starter das das sorfort das der der garnicht ver soll nur den code daraus Kopieren und bei dem Anderen Also Startbefehl der exe einfügen!!!
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.08.02 21:15
Titel: Re: hi
deagle hat folgendes geschrieben: | Jetzt habe ich folgendes Prob wenn ich das Programm testen will, |
bis hier komme ich noch mit, aber ...
Zitat: | geht das auch nur wenn ich aus der ComBox1 ein Pfad aussuche starter das das sorfort das der der garnicht ver soll nur den code daraus Kopieren und bei dem Anderen Also Startbefehl der exe einfügen!!! |
Hä?  Schreib- und Tippfehler in allen Ehren, aber ein paar Kommas und ein klein wenig Sorgfalt würden mir helfen, das zu verstehen.  Sorry, bin schon ein alter Kerl (knapp 30), da habe ich den jugendlichen Slang nicht mehr so drauf ... 
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Di 27.08.02 21:20
selbst mit meinen jungen 15 jahren habe ich nichts verstanden 
_________________ Viele Grüße
Jakob
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Di 27.08.02 21:36
sorry, für Rechtschreibung!!
Aber das Problem hat sich gelöst!!
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Di 27.08.02 21:40
Aber eine Frage habe ich noch:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Var passwd :String; Begin If CheckBox1.Checked then passwd := ' +password '+Edit2.Text else passwd := ''; WinExec(PCHAR('C:\Sierra\Counter-Strike\cstrike.exe -console +connect' +edit1.text+Passwd) ,SW_SHOW); end; |
Also das muss so auch die leerstellen: Quelltext 1: 2: 3:
| C:\Sierra\Counter-Strike\cstrike.exe -console +connect Hier_muss_das_hin_aus_dem_edit_1_ feld +password Und?_hier_aus_dem_edit2_feld,aber_er_soll_das_erst_+passoword_dahinterschreiben_ wenn_ich_cheackbox_1_angeklickt_habe!! |
Ich Glaube das war verständlich oder ???
|
|
SMI
      
Beiträge: 106
Win95-2003 / Debian / Suse
D1/D3/D6/D7
|
Verfasst: Di 27.08.02 23:25
sag mal lernst du gerade Deutsch? Man kann sich ja mal verschreiben, passiert mir ständig, oder einen Buchstaben drehre äh dreher im Wort haben, aber die Sätz sollen dennoch verständlich sein!
Zitat: |
Also das muss so auch die leerstellen
|
??? hier fehlt im Satz das Verb, ein Hilfsverb ist zwar da, sogar ein "auch" aber ohne Verb fehlt trotzdem der Sinn.
Zitat: |
aber_er_soll_das_erst_+passoword_dahinterschreiben_wenn_ich_cheackbox_1_angeklickt_habe!!
|
Da kann ich nur einen Deutschlehrerin während meiner Schulzeit zitieren:
"Entweder musst du langsamer schreiben, oder schneller Denken"
Hast du mit deiner Deutsch Exkursion folgendes gemeint:
Hinter dem String "C:\Sierra\Counter-Strike\cstrike.exe -console +connect" soll der Inhalt des EditFeld1 eingefügt werden. Wenn CheckBox1 markiert ist wird " +password" und der Inhalt des EditFeld2 ergänzt.
Ich weiß jetzt nicht wo dein Problem ist, aber das Program macht doch genau das beschriebene:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Var passwd :String; Begin // Checkbox1 Markiert? If CheckBox1.Checked then //... JA -> String passwd wert zuweisen passwd := ' +password '+Edit2.Text else //... Nein -> String passwd leer passwd := ''; // Ausführen // "C:\...\cstrike.exe -console +connect" +edit1.text, wenn der // String passwd nicht leer ist soll er hinzugefügt werden, somit wird // "+password" +edit2.text hinzugefügt WinExec(PCHAR('C:\Sierra\Counter-Strike\cstrike.exe -console +connect' +edit1.text+Passwd) ,SW_SHOW); end; |
SMI
_________________ Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Mi 28.08.02 04:09
Keine Ahnung. Passiert bei mir auch öfters! 
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Mi 28.08.02 04:33
@SMI jo ich habe jetzt auch endlich den kompletten Unicode verstanden!!
das mit Then bedeutet das der doch erst die Checkbox Checkt wen das Hackchen das ist das der das dan macht ne richtig ??
Besseres Deutsch!!
Deutsch schwere Sprache!! 
|
|
deagle 
      
Beiträge: 89
|
Verfasst: Mi 28.08.02 04:41
Also das Programm soll ein CS-Starter werden das ich nicht immer ins Spiel gehen muss un zu spieln sondern das ich das mit dem Programm machen kann. Denn alten Quellcode ging ohne Problem! WinExec(PCHAR('C:\Sierra\Counter-Strike\cstrike.exe -console +connect '+edit1.text) ,SW_SHOW);
Da startet der Counter-Strike und Connectet
bei dem neuen ist das Problem das der zwar CS Startet aber nicht Connectet!!
Woran könnte das leigen ?? Ich habe dir mal ein String gemacht denn man eigentlich haben muss um CS zu Starten mit Serverpassword und so
Quelltext 1:
| C:\Sierra\Counter-Strike\cstrike.exe -console +connect 100.100.100.100:27015 +password hallo |
VErstehste jetzt was ich machen will, den Quellcode den du mir geben hast ist ja richtig nur irendwie läuft das nicht kann es sein das es an eine leerstelle liegt???
Ich werde dan mal noch ein bisschen rumfummeln!!
|
|