amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > In Clipboard schreiben [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

29.05.2002, 13:48 Uhr

Steffen
Posts: 407
Nutzer
Hi,

das Brett hat Petra aber schnell eingerichtet :)

Nun zu meiner Frage:
Wie öffnet man das Clipborddevice um die Systemweite Clipbordfunktion
(Alt+C) nutzen zu können (schreiben)? Ich nutze BB2 und brüchte sowas
wie:

Clipboard öffnen
Text reinschreiben
Clipboard schließen

ohne irgend son Zeug wie Lib öffnen/schließen usw. also nur das nötigste, den Rest macht ja Blitz2 automatisch. (Habe aber auch leichte Kenntnisse in C)

--
Steffen :bounce:

[ - Antworten - Zitieren - Direktlink - ]

29.05.2002, 14:19 Uhr

Micha1701
Posts: 938
Nutzer
Hi!

Aus dem stehgreif würd ich sagen, einfach nach CLIPS: schreiben.

Ist das Device nicht dafür da? PIPE: funktioniert ähnlich.

Benutzt hab ichs aber noch nicht....
(also unter umständen eine unqualifizierte Antwort)
--
:boing: Micha :boing:

Look at my HP: http://www.lanser-online.de.vu



[ - Antworten - Zitieren - Direktlink - ]

29.05.2002, 15:05 Uhr

TriMa
Posts: 2793
[Ex-Mitglied]
Amiga+c ist copy amiga+v ist einfügen amiga+x ist ausschneiden nicht alt+c

--
MfG TriMa

--

Look there -> http://www.trimaweb.de

[ - Antworten - Zitieren - Direktlink - ]

29.05.2002, 15:15 Uhr

DOM
Posts: 1044
Nutzer
Joh, einfach nen Editor nehmen und den Text nach Clips mit
Namen 0 (Null) speichern...

[ - Antworten - Zitieren - Direktlink - ]

29.05.2002, 16:07 Uhr

Steffen
Posts: 407
Nutzer
@DOM

Funktioniert leider nicht.

@all

Wie öffnet mann das Clipboarddevice und schreibt darin (Mit welcher Funktion)
--
Steffen :bounce:

[ - Antworten - Zitieren - Direktlink - ]

29.05.2002, 16:47 Uhr

David
Posts: 65
Nutzer
Hallo Steffen,

die iffparse.library stellt für solche Sachen Funktionen zur
Verfügung.
Da ich kein BB2 kann , da du schreibt das du leichte C Kenntnisse
hast, kann ich nur ein Beispiel in C geben.


#define ID_FTXT MAKE_ID('F','T','X','T')
#define ID_CHRS MAKE_ID('C','H','R','S')

char *str="Der Text der ins Clipboard soll";

struct IFFHandle *iff=0;

iff=AllocIFF();
if(iff)
{
iff->iff_Stream=(ULONG)OpenClipboard(0);
if(iff->iff_Stream)
{
InitIFFasClip(iff);
if(OpenIFF(iff,IFFF_WRITE)==0)
{
PushChunk(iff,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN);

PushChunk(iff,0,ID_CHRS,IFFSIZE_UNKNOWN);
WriteChunkBytes(iff,str,strlen(str));
PopChunk(iff);

PopChunk(iff);
CloseIFF(iff);
}
CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
}
FreeIFF(iff);
}


mfg
David

[ - Antworten - Zitieren - Direktlink - ]

30.05.2002, 08:41 Uhr

Steffen
Posts: 407
Nutzer
Anhang diesen Beispiels habe ich folgenes geschrieben:

;#define ID_FTXT MAKE_ID('F','T','X','T')
;#define ID_CHRS MAKE_ID('C','H','R','S')

String_$="Der Text der ins Clipboard soll" + Chr$(0)

*iff.IFFHandle=AllocIFF_();
If(*iff)
NPrint "AllocIFF"
*iffiff_Stream= OpenClipboard_(0);
If(*iffiff_Stream)
NPrint "OpenClip"
InitIFFasClip_ *iff;
If(OpenIFF_(*iff,#IFFF_WRITE)=0)
NPrint "OpenIFF"
Test$ = "FTXT" + Chr$(0)
PushChunk_ *iff,&Test$,#ID_FORM,#IFFSIZE_UNKNOWN
Test2$ = "CHRS" + Chr$(0)
PushChunk_ *iff,&Test2$,&String_$,#IFFSIZE_UNKNOWN;
WriteChunkBytes_ *iff,&String_$,Len(String_$)
PopChunk_(*iff);

PopChunk_(*iff);
CloseIFF_(iff);
EndIf
CloseClipboard_(*iffiff_Stream);
EndIf
EndIf
FreeIFF_(*iff);
Delay_ 100
End

Wenn das Programm ausgeführt und beendet wurde, komm es, wenn die Taste amiga-V aufgerufen wird zu einen Absturz des Systems. Wo Liegt der Fehler?
--
Steffen :bounce:

[ - Antworten - Zitieren - Direktlink - ]

30.05.2002, 10:53 Uhr

AND
Posts: 9
Nutzer
Hi Steffen,

Du kannst dir ja so behelfen:

Aus dem C-Fragment machst du CLI-Kommando, dass
den übergebenen Paramter ins Clipboard schreibt.
Dann kannst aus BB2 einfach dieses (externe) Kommando aufrufen
und den Text so ins Clipboard manövrieren.

Ich weiss, das ist umständlich, aber wenns funktioniert.

Das vollständige C-Programm sieht so aus:

#include <clib/iffparse_protos.h>
#include <libraries/iffparse.h>

#define ID_FTXT MAKE_ID('F','T','X','T')
#define ID_CHRS MAKE_ID('C','H','R','S')

extern struct Library *IFFParseBase;

char *str="Der Text der ins Clipboard soll";

struct IFFHandle *iff=0;

void main(int argc, char **argv) {
if(argc > 1) str = argv[1];

iff=AllocIFF();
if(iff) {
iff->iff_Stream=(ULONG)OpenClipboard(0);
if(iff->iff_Stream) {
InitIFFasClip(iff);
if(OpenIFF(iff,IFFF_WRITE)==0) {
PushChunk(iff,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN);

PushChunk(iff,0,ID_CHRS,IFFSIZE_UNKNOWN);
WriteChunkBytes(iff,str,strlen(str));
PopChunk(iff);

PopChunk(iff);
CloseIFF(iff);
}
CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
}
FreeIFF(iff);
}
}

Es lässt sich mit SAS/C in 1 Sek. kompilieren und funktioniert
ohne Probleme.

Gruss Andre

[ - Antworten - Zitieren - Direktlink - ]

30.05.2002, 15:25 Uhr

Steffen
Posts: 407
Nutzer
Habe nur den StormC4-GCC oder StromC3 compiler und da kommt leider

"parse error before '',
linie 22 & 24" (PushChunk)

und das mehre male. Wie muss mann den Source abändern damit der Funktioniert (Könnte den Source dann auch für spätere C-Projekte nutzen)An der SElben Stelle bin ich übrigens auch mit Blitz gescheitert (wuste nicht wie ich das einbinden sollte)



--
Steffen :bounce:

[ Dieser Beitrag wurde von Steffen am 30.05.2002 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

30.05.2002, 16:54 Uhr

David
Posts: 65
Nutzer
Hallo Steffen,

so lässt es sich auch mit StormC3 compilieren
ist einwenig abgeändert von AND.
Es werden alle Argumente in einen eigenen Chunk
gespeichert.

Code:

#include <clib/exec_protos.h>
#include <clib/iffparse_protos.h>
#include <proto/iffparse.h>
#include <libraries/iffparse.h>
#include <string.h>

struct Library *IFFParseBase=0;

#define ID_FTXT MAKE_ID('F','T','X','T')
#define ID_CHRS MAKE_ID('C','H','R','S')

void main(int argc, char **argv)
{
if(argc>1)
{
IFFParseBase=OpenLibrary("iffparse.library",36);
if(IFFParseBase)
{
struct IFFHandle *iff=0;
iff=AllocIFF();
if(iff)
{
iff->iff_Stream=(ULONG)OpenClipboard(0);
if(iff->iff_Stream)
{
InitIFFasClip(iff);
if(OpenIFF(iff,IFFF_WRITE)==0)
{
int i=0;
PushChunk(iff,ID_FTXT,ID_FORM,IFFSIZE_UNKNOWN);
for(i=1;i<argc;i++)
{
if(PushChunk(iff,0,ID_CHRS,IFFSIZE_UNKNOWN)==0)
{
WriteChunkBytes(iff,argv[i],strlen(argv[i]));
PopChunk(iff);
}
}
PopChunk(iff);
}
CloseClipboard((struct ClipboardHandle *)iff->iff_Stream);
}
FreeIFF(iff);
}
CloseLibrary(IFFParseBase);
}
}
else
{
// keine Argumente
}
}


mfg
david

[ - Antworten - Zitieren - Direktlink - ]

30.05.2002, 21:28 Uhr

DOM
Posts: 1044
Nutzer
@Steffen

äää ja Sorry die Datei muß FTXT (IFF-Format) sein, ist aber
nicht schwierig sowas zu machen...

[ - Antworten - Zitieren - Direktlink - ]

31.05.2002, 08:53 Uhr

Steffen
Posts: 407
Nutzer
@David

Ich dhabe dir eine EMail geschickt
--
Steffen :bounce:

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > In Clipboard schreiben [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.