Aktuelle Zeit: 12.04.2021 02:47

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 81 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 9  Nächste
Autor Nachricht
 Betreff des Beitrags: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 21:51 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Hallo,

für ein Projekt (nennen wir es mal PB2Web) suche ich noch helfende Köpfe und Hände.

Ziel des Projektes ist es, PureBasic-Programme in Browsern laufen lassen zu können.

Dabei ist die Idee, für jeden(*) PB-Befehl ein entsprechendes JavaScript-Pendant zu
schreiben, damit ein (noch zu schreibender) Parser möglichst wenig Code wandeln muss.

Ich arbeite derzeit an der Umsetzung von Windows- und Gadget-Befehlen.
(siehe auch hier: http://www.purebasic.fr/german/viewtopic.php?p=311963#p311963.)

Ein Fenster öffnet man z.B. so:
Code:
frmPanelGadget = OpenWindow(PB_Any, PB_Ignore, PB_Ignore, 600, 400, "PanelGadget-Example", PB_Window_SystemMenu | PB_Window_ScreenCentered);

Bis auf die nicht vorhandenen Rautenzeichen (#) ist der Aufruf somit in JavaScript identisch.

Bis zur 'Serienreife' ist es aber noch ein langer Weg. Wie schon oben erwähnt
muss ein Großteil der PB-Befehle in entsprechendes JavaScript umgesetzt werden.

Zum Beispiel wäre hier das JS-Pendant zur PB-Left-Funktion:

Code:
// Result$ = Left(String$, Length)
function Left(String, Length) {
    return String.substring(0, String.length - Length);
}

alert(Left("Hello World!", 7));


Wichtig ist, dass sich das JavaScript möglichst 'originalgetreu' verhält.

Ist keine Raketentechnik, sondern 'nur' ziemlich viel Fleißarbeit.

Mein Aufruf an Euch: Wann immer Ihr ein wenig Zeit und Muße habt,
könnt Ihr gerne den einen oder anderen Befehl übersetzen und hier
posten. Je mehr mitmachen, desto schneller kommen wir ans Ziel.

(*): natürlich nur PB-Befehle, die im Client ausgeführt werden können
(also keine Datenbank-, Datei- und ähnliche Befehle)

Danke im voraus & Grüße ... Kiffi

// Edit:

Was wir bisher schon haben, kann man hier nachlesen:

[Link entfernt erste Beta folgt...]

--

Wer PB-Konstanten benötigt: [Link entfernt erste Beta folgt...]

_________________
Hygge


Zuletzt geändert von Kiffi am 29.12.2013 20:12, insgesamt 5-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 21:56 
Offline
Admin

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Klingt toll. Ich würd gerne mitmachen, aber ich kann aufgrund des Zeitmangels nicht allzu viel umsetzen.
Wenn ich mal Zeit habe, werde ich hier was posten. ;)
Ansonsten gutes Gelingen an alle. :allright:

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 22:03 
Offline
Admin

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Da du meinen Beitrag bereits gelesen hast, muss ich wohl (leider) einen Doppelpost machen. :D
Mir ist noch was eingefallen und zwar wäre es vorteilhaft, wenn im Eingangspost eine Art Tabelle oder eine reine Auflistung aller PB-Funktionen vorhanden ist, damit man leicht und schnell nachschauen kann, welche Funktion bereits umgesetzt wurde und welche noch nicht.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 22:10 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
RSBasic hat geschrieben:
aber ich kann aufgrund des Zeitmangels nicht allzu viel umsetzen.

muss ja auch nicht. Ein Schnippselchen zwischendurch (wenn man
mal ganz viel Langeweile hat) reicht vollkommen aus. Wenn viele
mitmachen, kommt auch schnell was zusammen.

RSBasic hat geschrieben:
wäre es vorteilhaft, wenn im Eingangspost eine Art Tabelle oder eine reine Auflistung aller PB-Funktionen vorhanden ist, damit man leicht und schnell nachschauen kann, welche Funktion bereits umgesetzt wurde und welche noch nicht.


gute Idee! :allright:

Hier nochmal Left() und Right():

Code:
// Result$ = Right(String$, Length)
function Right(String, Length){
  return String.slice( -( Length ) );
}

// Result$ = Left(String$, Length)
function Left(String, Length) {
  return String.slice( 0, Length );
}

alert(Right("Hello World!", 2));
alert(Left("Hello World!", 2));


Ich muss auch dazu sagen, dass ich noch ein JS-Anfänger bin (aber ich gebe
mir Mühe ;-)). Also nicht schimpfen, wenn ich seltsamen JS-Code poste! :D

Grüße ... Kiffi

_________________
Hygge


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 22:34 
Offline
Admin

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Mid():
Code:
// Ergebnis$ = Mid(String$, StartPosition [, Länge])
function Mid(String, StartPos, Length) {
  return typeof(Length) == "undefined" ? String.substring(StartPos-1) : String.substring(StartPos-1, StartPos+Length-1 );
}

alert(Mid("Hello World!", 1, 3));
alert(Mid("Hello World!", 1));


CountString():
Code:
// Ergebnis = CountString(String$, StringToCount$)
function CountString(String, StringToCount) {
  return String.split(StringToCount).length-1;
}

alert(CountString("How many 'ow' contains Bow ?", "ow"));

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 22:54 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
@RSBasic: :allright:

Hier noch mal was Aktuelles zum gucken: [Link entfernt]

Grüße ... Kiffi

Edit: Link entfernt. Beta-Ankündigung folgt...

_________________
Hygge


Zuletzt geändert von Kiffi am 29.12.2013 20:38, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 22:55 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
StringField():
Code:
function StringField(string, index, separator){
   return string.split(separator)[index-1];
}

for (var k=1;k<=6;k++) //Beispiel aus der PB Hilfe
{
   alert(StringField("Hello I am a splitted string", k, " "));
}


Mid():
JavaScript unterstützt keine optionalen Parameter. Zumindest nicht in der gängigen Definition function(var=1).
Funktionsname.arguments.lenght gibt die Anzahl der übergebenen Parameter zurück. Somit lässt sich ermitteln, ob der optinale Parameter Lenght übergeben wurde, oder nicht. Falls nicht, wird Length die Länge des übergebenen Strings zugeteilt.
edit: Uuuh, RSBasic, Tertiärer Operator. Das ist natürlich eleganter als ein krudes If/Else. Wenn sich ein PBler aber mal den Parser anschauen möchte hat er es mit If/Else wahrscheinlich leichter alles zu verstehen.
Code:
function Mid(String, Start, Length){
   if (Mid.arguments.length==2){ Length= String.length; }   
   return String.substr(Start-1, Length);
}

alert(Mid("Hello", 2))    // wird "ello" anzeigen
alert(Mid("Hello", 2, 1)) // wird "e" anzeigen



LCase() & Ucase()

Code:
function LCase(string){
   return string.toLowerCase();
}

function UCase(string){
   return string.toUpperCase();
}

alert(LCase("Alles Klein gesChrIeBen"));
alert(UCase("Alles Groß gesChrIeBen")); //Hier wird wohl versucht das neue große "ß" auszugeben.
                              //Mein Browser zeigt allerdings nur Murks an. Evtl. eine Weiche einbauen?


Len():
Code:
function Len(string){
   return string.length;
}

alert(Len("Hallo")); //5
alert(Len("Hallo Welt")); //10


Chr() & Asc()
Code:
function Chr(number){
   return String.fromCharCode(number)
}

function Asc(c){
   return c.charCodeAt(0)
}

alert(Chr(33));
alert(Asc("!"));



FindString():
Code:
function FindString(Haystack, Needle, StartPosition, Modus){ //FindString(String$, SuchString$ [, StartPosition [, Modus]])
   if (FindString.arguments.length<4) {Modus = PB_String_CaseSensitive; } //CaseSensitive ist Standardmodus   
   if (FindString.arguments.length==2){ StartPosition=0; }  else { StartPosition-1;}   //Startposition is standardmäßig 0. "-1", weil PB bei 1 anfängt und JS bei 0
   
   switch (Modus){
      case PB_String_NoCase:
         Haystack=Haystack.toLowerCase();
         return Haystack.substr(StartPosition, Haystack.length).indexOf(Needle.toLowerCase())+StartPosition+1;         
      break;   
      
      default:
         return Haystack.substr(StartPosition, Haystack.length).indexOf(Needle)+StartPosition+1;
      break;
   }   
}

alert(FindString("Purebasic,Bas", "Bas")); // wird 11 ausgeben, da Case Sensitive Standard option ist
alert(FindString("Bas456789Bas", "bAs",7,PB_String_NoCase)); // wird 10 ausgeben


Wie handlest du Konstanten? Der Modus #PB_String_CaseSensitive/ #PB_String_NoCase fehlt hier noch. Das ist eine einfache If-Abfrage, aber ich weiß nicht welchen Input ich erwarten soll.
edit: OK. FindString angepasst. Es muss darauf geachtet werden dass die Konstanten auch definiert sind. Ansonsten klappt das nicht. Evtl sollte man die Funktion mit RSBasic's if (typeof(Param)=='undefined') erweitern.



Ich editier hier fleißig weiter^^

InsertString()
Code:
function InsertString(String, Insert, Position){
   return String.substring(0,Position-1) + Insert + String.substr(Position-1, String.length);
}

alert (InsertString("Hello !", "World", 7))  ; //Wird "Hello World!" anzeigen
alert (InsertString("Hello !", "World", 1))  ; //Wird "WorldHello !" anzeigen

_________________
Signatur und so


Zuletzt geändert von Derren am 24.05.2013 00:08, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 23:29 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
@Derren: Super! :D

die Konstanten und deren Werte findest Du hier: [Link entfernt]

(einfach nur das '#' - Zeichen weglassen)

Grüße ... Kiffi

Edit: Link entfernt. Beta-Ankündigung folgt...

_________________
Hygge


Zuletzt geändert von Kiffi am 29.12.2013 20:39, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 23:35 
Offline
Benutzeravatar

Registriert: 23.07.2011 02:08
Ja habe es grade in deiner constants.js gesehen. Allerdings solltest du das Schlüsselwort const verwenden, anstatt var. Dann kann niemand die Konstanten überschreiben, z.B. falls jemand selbst Hand an den JS Code legen möchte, aber nicht weiß, dass If-Abfrage == benötigen und mit = einfach ein neuer Wert zugewiesen wird und If() somit immer True ergibt.
Code:
var PB_Konstante1 = 1;
const PB_Konstante2 = 1;

PB_Konstante1 = 4;
PB_Konstante2 = 4;

alert (PB_Konstante1 + ' << sollte 1 sein');
alert (PB_Konstante2 + ' << sollte 1 sein');

_________________
Signatur und so


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PB2Web: Mitstreiter gesucht
BeitragVerfasst: 23.05.2013 23:52 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
Derren hat geschrieben:
Allerdings solltest du das Schlüsselwort const verwenden, anstatt var.

würde ich nur zu gerne. Allerdings haben ältere Browser (der IE sowieso) damit Schwierigkeiten.

Guckstu hier: https://developer.mozilla.org/de/docs/JavaScript/Reference/Statements/const

Grüße ... Kiffi

_________________
Hygge


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 81 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5 ... 9  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye