AMIGA-RESISTANCE https://forum.amiga-resistance.info/ |
|
kleines Lunch Tool für PC https://forum.amiga-resistance.info/viewtopic.php?t=2708 |
Seite 2 von 6 |
Autor: | root [ 29 Okt 2009, 16:51 ] | |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | |
...und gehts? |
Autor: | Murmel [ 01 Nov 2009, 20:28 ] | ||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | ||
Sorry das es etwas gedauert hat. Ich habe es aufm MacMini runtergeladen, habe aber da leider kein HW drauf ![]() Es sieht ehrlich gesagt sehr gut aus das Ding ![]() ![]() ![]() |
Autor: | Murmel [ 29 Dez 2009, 00:58 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
So weil ich heute irgendwas machen wollte habe ich mal an diesem Startertool rumgefummelt Oo ![]() Im Moment macht es folgende neue Dinge - Beim Start wird eine server.txt eingelesen, falls nicht vorhanden angelegt. - Save Routine zum abspeichern der aktuellen IP + Passwort - Auf Klick startet er die ersten 2 gespeicherten Server (Aber noch voller Bugs). Nun Frage kennt sich einer mit Listview aus und kann mir das erklären ? Code: Alles auswählen ; Quake3 Startool ; ----------------------------------------------------------------------------- @INCLUDE "ScuiLib.hws" @DISPLAY {Title = "Quake3 Launchtool", Width = 300, Height = 305, Color = $EAECEA} ; ;--Variablen deklarieren-- ; Dim server$[17] ; ;--Daten geladen-- ; @SPRITE 1, "gfx/logo.iff" ; ;--server.txt öffnen oder anlegen wenn nicht vorhanden-- ; result=Exists("server.txt") If result <> 1 ; ; --Falls Eintrag < 2 Zeichen kein Gültiger Eintrag-- ; For z = 0 To 16 Step 2 server$[z] = "No Entry!" server$[z - 1] = "" Next OpenFile(1, "server.txt", #MODE_WRITE) ;Seek (1, 0) For z = 0 To 15 WriteLine(1, server$[z]) Next CloseFile(1) EndIf OpenFile(1, "server.txt") While Not Eof(1) ; server$[z] = ReadLine(1) z = z + 1 Wend z = z - 1 CloseFile(1) ; ----------------------------------------------------------------------------- MoveDisplay(#CENTER, #CENTER) EscapeQuit(True) DisplaySprite(1, #CENTER, 10) Function fEndApplication(msg) ObjektID = scui.GetIFOID("StringBox1") Obj=scui.Get(ObjektID) IP=Obj.value ObjektID = scui.GetIFOID("StringBox2") Obj=scui.Get(ObjektID) PW=Obj.value Run ("quake3 connect "..IP.."; password "..PW) End EndFunction Function ListViewChanged(msg) lv = scui.Get("ListView") z=0 For i = 0 To helpers.CountEntries(lv.Entries) -1 ;DebugPrint(lv.Selected[3]) ;DebugPrint(lv.Entries[i]) ;obj = lv_EntriesCount ;DebugPrint (GetType(lv)) ;Local state = "" ;For i = 0 To 8 -1 s = lv.Selected[i] If lv.Selected[0] = 1 IP=server$[0] PW=server$[1] Run ("quake3 connect "..IP.."; password "..PW) End EndIf If lv.Selected[2] = 1 IP=server$[2] PW=server$[3] Run ("quake3 connect "..IP.."; password "..PW) End EndIf If lv.Selected[4] = 1 IP=server$[4] PW=server$[5] Run ("quake3 connect "..IP.."; password "..PW) End EndIf If lv.Selected[6] = 1 IP=server$[6] PW=server$[7] Run ("quake3 connect "..IP.."; password "..PW) End EndIf ;If lv.Selected[1] = 1 Then z=1 ;If lv.Selected[2] = 1 Then z=2 ;Local mylist = scui.Get(listview_name) ; Next ;scui.Set("StatusLabel", { Text = { Content = { Values = { "Changed ListView Selection, current selection is:"..State } } } }, 1 ) EndFunction Function fSaveServer(msg) ObjektID = scui.GetIFOID("StringBox1") Obj=scui.Get(ObjektID) IP$=Obj.value ObjektID = scui.GetIFOID("StringBox2") Obj=scui.Get(ObjektID) PW$=Obj.value If IP$="Enter Server IP Here!" Then IP$="No Entry!" If PW$="Enter Password Here!" Then PW$="" ; --Variable für Eintrag durchsuchen und eintragen neuer Daten-- Eintrag = 1 For z = 0 To 15 If Eintrag = 1 and server$[z]="No Entry!" server$[z] = "" server$[z] = IP$ server$[z + 1] = "" server$[z + 1] = PW$ Eintrag = 0 EndIf Next OpenFile(1, "server.txt", #MODE_WRITE) Seek (1, 0) For z = 0 To 15 WriteLine(1, server$[z]) Next CloseFile(1) EndFunction ; BACKGROUND FRAME a = scui.NewObject( #IFOCLASS_BEVELBOX, "BGFrame", ; Gadget Class { x = 5, y = 5 }, ; Position { x = 290, y = 290 } ) ; Size ; Eingabefelde IP Adresse c = scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox1", { x = 15, y = 130 }, { x = 170, y = 25 }, { Enabled = #IFO_ENABLED }, { Values = { "Enter Server IP Here!" }, Lines = 1, ;zum Test mal mit IP InputType = #GETKEY_NUMERIC, Clear1st = 1, MaxLen = 21, }, { OnExit = ButtonID, OnChange = ButtonID, OnKeyPress = ButtonID } ) ; Eingabefeld Passwort d = scui.NewObject( #IFOCLASS_STRINGBOX, "StringBox2", { x = 15, y = 160 }, { x = 170, y = 25 }, { Enabled = #IFO_ENABLED }, { Values = { "Enter Password Here!" }, Lines = 1, ;zum Test mal mit Paswword InputType = #GETKEY_ALL, Clear1st = 1, MaxLen = 50, }, { OnExit = ButtonID, OnChange = ButtonID, OnKeyPress = ButtonID } ) ; Startbutton e = scui.NewObject( #IFOCLASS_BUTTON, "StartButton", { x = 195, y = 160 }, { x = 90, y = 25 }, nil, { Values = { "Start Game" }, Lines = 1 }, { OnPushed = fEndApplication }) ; Savebutton e = scui.NewObject( #IFOCLASS_BUTTON, "SaveButton", { x = 195, y = 130 }, { x = 90, y = 25 }, nil, { Values = { "Save Server" }, Lines = 1 }, { OnPushed = fSaveServer }) ; Liste für gespeicherte Server f = scui.NewObject( #IFOCLASS_LISTVIEW, ; Listview Class "ListView", ; Listview Name { x = 5, y = 200 }, ; Position { x = 290, y = 100 }, ; Width & Height nil, ; Visuals ; Below we define the column's names... { FieldNames = { "Server", "Password" }, ; ...and their width in percentual Sizes = { 60, 40 }, Entries = { { server$[0], server$[1] }, { server$[2], server$[3] }, { server$[4], server$[5] }, { server$[6], server$[7] }, { server$[8], server$[9] }, { server$[10], server$[11] }, { server$[12], server$[13] }, { server$[14], server$[15] }, } }, { OnChanged = ListViewChanged }) ;{ OnChanged = fEndApplication2 }) /* COMMENTS What we have seen: - ListView class DETAILS *** ListView class *** The <ListView> class is used to display a grid of informations organized by rows and columns. You can build ListViews of any size (columns and rows), if needed, a scroll bar will be added to the control allowing the user to scroll all the available rows. ListViewes can work in two modes, like options, with a single select or a multiselect mode. Columns can be sized easily with the tag <Sizes> containing every column size in %. ListView's data can be sorted clicking on each column header, a second click will invert the sorting method. When you sort your starting list order will be lost, so, if you want to know wich rows is selected you should use scui.Get() and look for the tables: Entries With all ListView's sorted entries Selected All row selection status (ordered like <Entries>) Example: Local i Local mylist = scui.Get(listview_name) For i = 0 To helpers.CountEntries(mylist.entries) -1 DebugPrint(mylist.selected[i], mylist.entries[i][0]) Next ; --- entries[row][column] --- */ Repeat WaitEvent Forever |
Autor: | root [ 29 Dez 2009, 15:39 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Hey! Sieht sehr gut aus. Kannst aber bitel mal den fertigen Code direkt zum Downlaoden anbieten wenn ich mir das mit Copy&Paste hier nach Cubic rünber ziehe bekomme ich Probleme mit den Reizeichen oder so. Das größte Manko ist imo das leider kein Copy&Paste bei Hollywood funzt sonst hätte ich mich auch mal weiter daran versucht. Eine Idee hätte ich noch und zwar das mann mit der Tab Taste zwischen den beiden Eingabefeldern switchen könnte. ![]() |
Autor: | Murmel [ 29 Dez 2009, 16:34 ] | ||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | ||
Hallo. Ich hängs mal an, aber nicht erschrecken der Source ist voll von Zeuchs was ich ausprobiert habe ![]() Datei ist lha obwohl es auf .zip endet. lha ist nicht erlaubt.
|
Autor: | Tipsi [ 30 Dez 2009, 15:49 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Salli Murmel Mit Listview habe ich mich bis jetzt nicht beschäftigt. Mal schauen, was ich dazu rausfinde. Hmm, welche Version von Hollywood benutzt Du? Griessli Tipsi |
Autor: | Murmel [ 30 Dez 2009, 20:08 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
@Tipsi Hi. Ich habe HW4.0 benutzt, und ich denke Root auch. |
Autor: | Tipsi [ 01 Jan 2010, 01:01 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Salli Murmel Mit folgenden Befehlen kannst Du die Auflistung beeinflussen: Code: Alles auswählen scui.Set("ListView", { Entries = { { server$[0], server$[1] }, { server$[2], server$[3] }, { server$[4], server$[5] }, { server$[6], server$[7] }, { server$[8], server$[9] }, { server$[10], server$[11] }, { server$[12], server$[13] }, { server$[14], server$[15] } } } ,1) geschwungene Klammer. Möchtest Du den Titel ändern, geht das mit folgender Zeile: Code: Alles auswählen scui.Set("ListView", { FieldNames = {"Zwischencomputer","Passwort"} } ,1) abspeichern und mit ReadTable() wieder einem Table zuweisen. Das geht erst ab Hollywoodversion 4.0. Darum meine letzte Frage. War es das, was Du wissen wolltest? Oder fehlt noch was? Griessli Tipsi |
Autor: | Murmel [ 01 Jan 2010, 10:36 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Danke für die Mühe Tipsi ![]() Aber das mit dem abspeichern funktioniert ja schon. Ob da nun Writetable besser ist mal ausprobieren. Mir geht es darum auswerten welcher Server in der Liste angeklickt wird. Und da kriege ich keine richtigen Werte zurück zum Unterscheiden. Es muss ja irgendwie gehn das man weiss Position 1, 2 oder Position 10 gedrückt. |
Autor: | Tipsi [ 01 Jan 2010, 14:50 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Salli Murmel Das Problem ist, dass in diesem Programm zwei verschiedene Formate für Server und Passwort verwendet wird. Das Objekt ListView der ScuiLib verwendete Format ist: Zeile[0][0]=Server1, Zeile[0][1]=Passwort1 Zeile[1][0]=Server2, Zeile[1][1]=Passwort2 Zeile[2][0]=Server3, Zeile[2][1]=Passwort3 Zeile[3][0]=Server4, Zeile[3][1]=Passwort4 Zeile[4][0]=Server5, Zeile[4][1]=Passwort5 Zeile[5][0]=Server6, Zeile[5][1]=Passwort6 Du liest die Daten von der Disk dann folgendermassen ein: server$[0]=Server1 server$[1]=Passwort1 server$[2]=Server2 server$[3]=Passwort2 server$[4]=Server3 server$[5]=Passwort3 server$[6]=Server4 server$[7]=Passwort4 server$[8]=Server5 server$[9]=Passwort5 Das sind zwei verschiedene Zählsysteme. Am besten ist es, wenn beim Abspeichern von Server und Passwort gleich beide auf der selben Zeile mit einem Trennzeichen stehen: Server1¦Passwort1 Server2¦Passwort2 Server3¦Passwort3 Server4¦Passwort4 Server5¦Passwort5 und nicht untereinander: Server1 Passwort1 Server2 Passwort2 Server3 Passwort3 Server4 Passwort4 Server5 Passwort5 Zum Trennen von Zeilen mit Trennzeichen verwende ich folgende Funktion: Code: Alles auswählen Function p_GetWord(Zeichenkette,WortNummer,TrennZeichen) Local Wort,Anzahl = SplitStr(Zeichenkette,Trennzeichen) Return(Wort[Wortnummer-1]) EndFunction z.B. Server1¦Passwort1. Mit WortNummer als Ganzahl wird festgelegt, welches Wort man herausnehmen möchte, beginnend mit 1 (und nicht mit Null). In TrennZeichen wird das Zeichen abgelegt, welches die Worte trennt. Hier ein Beispiel: Code: Alles auswählen server$[1] = p_GetWord("Server1¦Passwort1",1,"¦") passwort$[1] = p_GetWord("Server1¦Passwort1",2,"¦") Und hier noch zum Auslesen der Daten eines ListViews: Gedrueckt=lv.Selected i ist die Zeilennummer In Gedrueckt wird jetzt 0 oder 1 abgelegt. 0 bedeutet nicht gewählt 1 bedeutet Zeile in ListView gewählt/gedrückt Den Ihnhalt der Zeile wird folgendermassen ausgelesen: i ist wieder die Zeilennummer InhaltSpalte1=lv.entries[0] InhaltSpalte2=lv.entries[1] Und zum Schluss noch eine wichtige Bitte: Wenn Ihr Code eintippt, gewöhnt euch unbedingt das Einrücken an. Das macht den Code einfacher zum Lesen: Code: Alles auswählen Funktion Franz() If a=0 Eingerückter Code Eingerückter Code Endif Sonstiger Code Weiterer Code Nächste Zeile Und wieder eine Zeile For a=0 to 2 Eingerückter Code Eingerückter Code Next Endfunction Code: Alles auswählen Funktion Franz() If a=0 Eingerückter Code Eingerückter Code Endif Sonstiger Code Weiterer Code Nächste Zeile Und wieder eine Zeile For a=0 to 2 Eingerückter Code Eingerückter Code Next Endfunction und CloseFile() einrücke. So, genug gelabbert. ![]() Code stürzen und die Änderungen vornehmen oder soll ich mich mal ransetzen und ein Beispiel tippen? Griessli Tipsi |
Autor: | Murmel [ 01 Jan 2010, 15:08 ] |
Betreff des Beitrags: | Re: kleines Lunch Tool für PC |
Aha Ok Danke ![]() wie Du willst ![]() |
Autor: | Murmel [ 01 Jan 2010, 20:57 ] | ||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | ||
So neue Version DB funktioniert nun ![]() - SaveRoutine ist komplett neu - dbgrösse ist im moment max 8 Server testweise aber ausbaubar - Programm startet im Moment Q3 aber solltet q1-3 und warsow starten können, wenn die .exe angepasst wird. Das Programm ist aber von Root! Ich hoffe er nimmt es mir nicht übel das ich daran rumfummele. @Tipsi Roots Source war gut! Ich war ich der es so verstümmelt ![]() Zukünftig würde ich sehen. -Directory aufrufen und .exe zum Starten wählen -ServerDB Grösse erweitern -Server per klick aus DB löschen ACHTUNG leider immer noch ein Fehler drin. >2 DB Einträge werden nicht gestartet Grummel.
|
Autor: | Tipsi [ 01 Jan 2010, 22:25 ] | |||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | |||
Salli Murmel Ja, das ganze wurde übersichtlicher, super. Aha, ertappt. ![]() Minimum beim Eintippen einzuhalten. Details kannst Du dann (bei einem kleinen Programm) immer noch später erledigen. Da mach ich mir keine Sorgen. Auch das bekommst Du noch hin. ![]() Griessli Tipsi |
Autor: | Murmel [ 01 Jan 2010, 22:43 ] | ||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | ||
Ja Fehlerteufel hätte mehr als 2 doch probieren sollen aber nu geht es ![]() @Tipsi Naja ich versuche mich immer noch an die Sprache zugewöhnen, bei den vielen Befehlen ist es aber nicht so leicht. Und dann schlampt man schon mal rum. Ich zumindest ![]() Allerdings hoffe ich das in Zukunft 1. nicht allzuviel weitere Befehle dazukommen, sondern auf denen die da sind eher erweitert werden. 2. Der Fehlerparser verbessert wird. Weil man ist eher den halben Abend in der Doku am rumsuchen, als zu proggen. In Basic ging Früher ein A$=B$+C$ heute brauchst Du AddStr dazu. Und SplitStr muss man erstmal finden, und leider funktioniert es dann doch etwas andres als AddStr Je mehr Befehle es werden desto unübersichtlicher wird das ganze, dazu der Parser der Fehler oft irgnoriert und Fehler erst viel später meldet. Und oft geht was anscheinend, und wenn man was verändert dann merkt man erst einen anderen Fehler im Programm. So diese Version geht nu ![]()
|
Autor: | Tipsi [ 02 Jan 2010, 00:51 ] | |||||
Betreff des Beitrags: | Re: kleines Lunch Tool für PC | |||||
Es sind schon einige Befehle und auch ich ertappe mich dabei, gewisse Befehle oder Möglichkeiten zu vergessen. Zu 1: Dieser Wunsch wird Dir nicht in erfüllung gehen. Zu 2: Ich hoffe schon lange, dass Andreas ein Debugger rausbringt. Das würde die Fehlersuche massiv erleichtern. Bleib dran und versuche neue Ideen und Projekte zu programmieren. Mit der Zeit bist Du mehr am Proggen als an in der Dokumentation zu lesen. Es wird wirklich nicht übersichtlicher. Aber das Kapitel III. Function Reference ist gut unterteilt und meistens werde ich fündig. Aber ich vermisse bei den Befehlen auch sehr oft mehr Querverweise. Werd ich morgen mal anschauen. Jetzt gehe ich schlafen. Griessli Tipsi |
Seite 2 von 6 | Alle Zeiten sind UTC |
Powered by phpBB® Forum Software © phpBB Limited Deutsche Übersetzung durch phpBB.de |